2017-01-01 78 views

回答

1

假設中心是(x0,y0),我們正在尋找距離中心最大距離爲maxDist的隨機位置(x,y)。 我們知道,

(x-x0)*(x-x0) + (y-y0)+(y-y0) <= maxDist *maxDist 

所以首先我們發現在適當的距離爲X的隨機值,然後找一個隨機值Y:

int x = random.Next(-1* maxDist, maxDist); 
    int maxY =(int) Math.Floor(Math.Sqrt(maxDist * maxDist - x * x)); 
    int y = random.Next(-1*maxY, maxY); 
    y += y0; 
    x += x0; 
2

產生RMAX和RMIN的R的隨機數。爲0和360之間的theta生成一個不同的數字。現在使用基本的三角函數轉換爲(x,y)。

這種方法對我來說似乎最直觀,因爲所述的問題基本上是徑向對稱的。它也給你(R,Theta)你可能想要做的任何其他計算。