1. 程式人生 > >在圓內均勻生成隨機座標點

在圓內均勻生成隨機座標點

極座標法:(更優)

x = r*sin(theta)

y = r*cos(theta)

其中0 <= r <= R, 0 <= theta < 360                     

先隨機生成[0, 360)內的theta,然後隨機生成[0, 1]內的k, 且r = sqrt(k)*R。

根據根號函式的性質,這樣使得r的分佈在k靠近1(靠近邊緣)的地方點變得較密

(單純極座標隨機會使靠近圓心稠密而邊緣稀疏,故對r增添一個開方的因子)

外接矩形法:

每個圓對應一個外切矩形,我們隨機生成矩形內的點,如果該點在圓內,就返回改點,否則重新生成直到生成的點在圓內。

該方法的缺點是有可能連續幾次都生成不了符合要求的點。(可以求得:每次生成點時,該點有 

image 的概率在圓內)