【发布时间】:2010-08-09 23:02:40
【问题描述】:
我有一个矩形,并且在该矩形内有一个圆(位于矩形中心周围)。我想生成一个随机的 2 分量向量,它落在矩形内,而不是圆内。我该怎么做?
编辑:我更喜欢一种方法,我可以使用它来生成满足这些约束的向量,而无需暴力破解它。
【问题讨论】:
标签: language-agnostic random vector geometry
我有一个矩形,并且在该矩形内有一个圆(位于矩形中心周围)。我想生成一个随机的 2 分量向量,它落在矩形内,而不是圆内。我该怎么做?
编辑:我更喜欢一种方法,我可以使用它来生成满足这些约束的向量,而无需暴力破解它。
【问题讨论】:
标签: language-agnostic random vector geometry
Vector = Rectangle.RandomVector();
while (Circle.Contains(Vector)) {
Vector = Rectangle.RandomVector();
}
阿卡,只是蛮力它。它每次都有 21.5% 的机会在圈外:)
【讨论】:
为向量的 x 和 y 分量生成随机数,使得 x
更新:另一种生成非均匀分布但不丢弃任何向量的方法如下:在区间 0 到 2*pi 中随机选择一个角度。现在通过从由直线与前一个角度与圆和矩形的中心开始的交点确定的区间中随机选择一个值来确定向量的长度。 当保护到圆圈上时,所得分布将是均匀的。每个角度也将是统一的。但是在飞机上它不会是统一的。
【讨论】: