2012-06-19 46 views

回答

4

這裏最簡單的就是進行拒絕採樣。基本上你模擬一個二維變量(x,y)=(Math.random(),Math.random())。它是方形[0,1] [0,1]中的一個點。如果變量(x,y)在您繪製的三角形中,則取x。

x將有您正在尋找的分佈。

僞代碼:

x = Math.random(); 
y = Math.random(); 

if x+y < 1: 
    return x; 

您可以通過只繪製一個隨機變量(通過計算和反向累積分佈函數)實際上擺脫它,但是這是在這種情況下要複雜得多。

+1

非常感謝!我想過這個問題,我想出了更簡單的東西 - var a = 1-Math.sqrt(Math.random());這不是線性關係,但我認爲它會在我的情況下完成它的工作:)。感謝您的幫助,我從您的答案中學到了一些東西。 –

+1

事實上,顛倒cdf比我第一次想到的更容易:)這可能是最好的事情在這裏做... – GL770

1

倒累積分佈函數給出

1 - Math.sqrt(1 - Math.random()), 

所以

1 - Math.sqrt(Math.random()) 

會給你你想要的分佈。

請注意,0處的概率密度必須爲2,以便曲線下的面積給出總概率爲1。