【发布时间】:2017-04-14 19:24:48
【问题描述】:
我有一个函数(从 MATLAB 文档中复制)可以在球体内生成随机点。但是,球内的某些点是不允许的。如何在允许半径1<r<2 的空心球内生成随机点。换句话说,这些点应该位于 1 到 2 的半径上,因此 r = [0 1] 之间不允许有任何点。
编辑:完全忘记包含函数
function [x,y,z] = PointsInSphere(r,n)
rvals = 2*rand(n,1)-1;
elevation = asin(rvals);
azimuth = 2*pi*rand(n,1);
radii = r*(rand(n,1).^(1/r));
[x,y,z] = sph2cart(azimuth,elevation,radii);
end
【问题讨论】:
-
您是否尝试在 3D 中生成半径为 1 的球和半径为 2 的球之间的随机位置?
-
@StackPlayer 完全正确。
标签: matlab math random probability