math - 在环(环)内生成均匀随机点

标签 math random geometry probability

这个问题在这里已经有了答案:




8年前关闭。




Possible Duplicate:
Create random number within an annulus



我想在 annulus 内获得一个统一获得的随机点,即位于半径为 R1 的圆内的面积,但在半径为 R2 的圆之外,其中 R1 > R2并且两个圆都以同一点为中心。我想避免使用拒绝抽样。

如果可能,我希望解决方案类似于 this one - 用于计算圆内的随机点 - 我觉得它非常优雅和直观。也就是说,我也想避免使用平方根。

最佳答案

它很容易。使用极坐标,即为角度值 theta 生成一个随机值,为距原点的距离生成一个随机值。由于您的圈子都在同一个原点,这变得非常容易。

但注意:您可以通过均匀随机函数生成 theta 值,这很好,但是对于距离,您不能这样做,因为点将围绕原点聚集。
您必须考虑到圆的周长以 ^2 增长(您必须使用平方根的倒数)。

使用均匀分布的随机函数 rnd (0..1) 它会是这样的:

theta = 360 * rnd();
dist = sqrt(rnd()*(R1^2-R2^2)+R2^2);

编辑 :要转换为笛卡尔坐标,您只需计算:
x =  dist * cos(theta);
y =  dist * sin(theta);

关于math - 在环(环)内生成均匀随机点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13064912/

相关文章:

javascript - 在 three.js 中需要一个带纹理的圆圈

python - 按接近度对一组点进行分组

c++ - 求解 D 给定 A、B、C 和 C-D 的长度,平行于 A-B

c# - 计算e数C#

python - 对多条线上的点进行排序

python - 假设我有三个加权选择 : how do I randomly select one?

html - 如何创建具有统一笔划宽度的 SVG 多边形?

math - 顶点的副法线是法线和切线的交叉点吗?

c++ - 如何在numpy c-api中共享随机数生成器?

c++ - 奇怪的错误。在循环中使用 rand() 和数组