球面内的随机数
这个例子展示了如何在一个球体的体积内创建随机点,正如Knuth所描述的那样[1].本例中的球体以原点为中心,半径为3。
在球体内创建点的一种方法是在球坐标中指定它们。然后你可以把它们转换成笛卡尔坐标来画出来。
首先,初始化随机数生成器,使本例中的结果可重复。
rng (0,“旋风”)
计算球体上每个点的仰角。这些值在开区间内, ,但并非均匀分布。
Rvals = 2*兰特(1000,1)-1;标高= asin(rvals);
为球体中的每个点创建一个方位角。这些值在开区间内均匀分布, .
方位角= 2*pi*rand(1000,1);
为球体中的每个点创建一个半径值。这些值在开区间内, ,但并非均匀分布。
Radii = 3*(rand(1000,1).^(1/3));
转换为笛卡尔坐标并绘制结果。
[x,y,z] = sph2cart(方位角,仰角,半径);图plot3 (x, y, z,“。”)轴平等的
如果你想放入随机数表面上看,然后指定一个常数半径值作为球体的最后一个输入参数sph2cart
.在本例中,值为3.
.
[x,y,z] = sph2cart(方位角,高程,3);
参考文献
Knuth, D。计算机程序设计的艺术.第2卷,第3版。阅读,麻州:艾迪生-韦斯利·朗曼,1998年,第134-136页。