代码之家  ›  专栏  ›  技术社区  ›  RCIX

在一个矩形而不是一个圆内生成一个随机向量?

  •  1
  • RCIX  · 技术社区  · 14 年前

    我有一个矩形,在这个矩形里面有一个圆(它围绕着矩形的中心)。我想生成一个随机的2分量向量,它落在矩形内,而不是圆。我该怎么做?

    编辑:我更喜欢一种方法,我可以用它来生成一个满足这些约束的向量,而不必强迫它。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Mike Caron    14 年前
    Vector = Rectangle.RandomVector();
    
    while (Circle.Contains(Vector)) {
        Vector = Rectangle.RandomVector();
    }
    

    也就是说,用暴力强迫它。每次都有21.5%的机会不在圈外:)

        2
  •  0
  •   michid    14 年前

    为向量的x和y分量生成随机数,这样x<矩形.宽度和y<矩形.高度. 然后检查x^2+y^2<圆.半径^2如果是的话,就把矢量扔掉。

    更新 :另一种生成非均匀分布但不丢弃任何向量的方法如下:随机选择一个从0到2*pi的角度。现在,通过从直线与圆和矩形的中心开始的前一个角度的交点中随机选择一个值来确定向量的长度。

    推荐文章