我有一个矩形,并且在该矩形内部(围绕矩形的中心)有一个圆圈。我想生成一个落在矩形内的随机双分量矢量,但不是圆形。我该怎么办?
编辑:我更喜欢一种方法,我可以用它来生成满足这些约束条件的向量而不会强制它。
答案 0 :(得分:1)
Vector = Rectangle.RandomVector();
while (Circle.Contains(Vector)) {
Vector = Rectangle.RandomVector();
}
阿卡,只是蛮力。它每次都有21.5%的机会在圈外:)
答案 1 :(得分:0)
为向量的x和y分量生成随机数,使得x 更新:生成非均匀分布但不丢弃任何矢量的另一种方法如下:从0到2 * pi的间隔中随机选择一个角度。现在通过随机选择一个值来确定矢量的长度,该间隔由线的交点确定,该交点与前一个角度从圆心和矩形开始。
当保护到圆上时,得到的分布将是均匀的。每个角度也都是均匀的。然而,它在飞机上不会是均匀的。