man*_*oos 4 random matlab distribution
我尝试使用以下命令在center中生成随机点,使用以下命令
no_of_spots = 3000
radius=20
rvals = (2)*rand(no_of_spots,1)-(1);
elevation = asin(rvals);
azimuth = 2*pi*rand(no_of_spots,1);
radii = rand(no_of_spots,1)*radius;
[point_x,point_y,point_z] = sph2cart(azimuth,elevation,radii);
Run Code Online (Sandbox Code Playgroud)
从图中可以看出,随机点集中在原点附近,即看起来像高斯分布.我需要在球体内均匀分布的随机点,或者需要将点的浓度从中心移到另一点.我怎么能这样做/任何人都可以帮助/提前谢谢,Manu
如果你调整你的radii行:
radii = rand(no_of_spots,1)*radius;
Run Code Online (Sandbox Code Playgroud)
至:
radii = (rand(no_of_spots,1).^(1/3))*radius;
Run Code Online (Sandbox Code Playgroud)
您应该获得更加统一的分布.
这就是Knuth在"计算机编程艺术"中所描述的.卷.2并在此处引用.
| 归档时间: |
|
| 查看次数: |
451 次 |
| 最近记录: |