我有這樣的(僞):如何制定這個概念作爲一個公式
var a = Math.random(); // returns random number from 0 to 1
我想有選擇較低的數字,就像圖片描述的概率較大。公式(代碼)應該如何?
我有這樣的(僞):如何制定這個概念作爲一個公式
var a = Math.random(); // returns random number from 0 to 1
我想有選擇較低的數字,就像圖片描述的概率較大。公式(代碼)應該如何?
這裏最簡單的就是進行拒絕採樣。基本上你模擬一個二維變量(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 - Math.sqrt(1 - Math.random()),
所以
1 - Math.sqrt(Math.random())
會給你你想要的分佈。
請注意,0處的概率密度必須爲2,以便曲線下的面積給出總概率爲1。
非常感謝!我想過這個問題,我想出了更簡單的東西 - var a = 1-Math.sqrt(Math.random());這不是線性關係,但我認爲它會在我的情況下完成它的工作:)。感謝您的幫助,我從您的答案中學到了一些東西。 –
事實上,顛倒cdf比我第一次想到的更容易:)這可能是最好的事情在這裏做... – GL770