2012-11-19 43 views
2

我想製作一個算法,它會給我一些隨機的數字,我不知道他們會是什麼,但同時,更接近0的數字必須更可能發生爲而那些接近1的人則不太可能。我想玩弄線性指數分佈和指數分佈,所以請給出實現兩者的至少提示。我怎樣才能扭曲一組隨機數的分佈?

我想過和想過如何解決這個問題,但我仍然沒有線索,所以任何指針,將不勝感激。

注意:我不想討論,也沒有理解「真實」與「僞」隨機性的複雜性......這與安全或密碼學無關,對於它而言,我會簡單地使用Javascript的Math.random()作爲種子,所以我們都清楚自己在問什麼。

+0

可以使用指數函數,但你將不得不使用概率的密度,也可以建立一個範圍,例如,P(0 <= X <= 0.1)= 0.5 ,P(0.1

+0

對不起,您能否簡單介紹一下您使用的符號?我製作了這個簡單的圖形腳本,以便我可以通過插圖更好地理解這些東西,但它並不真正起作用。也許你也可以看看這個呢? http://jsfiddle.net/eg3bU/2/ – wwaawaw

+0

@AlbertoBonsanto得到它的工作... :)檢查出來! http://jsfiddle.net/RTbrL/ – wwaawaw

回答

1
var random = Math.pow(Math.random(), 2); 
+0

你能提供一點這個更詳細的說明嗎?由於隨機數字的樂觀,這很難讓我的腦袋圍繞這將會產生的影響,但它似乎很有趣。 – wwaawaw

+0

它給你0和1之間的隨機數。數字更可能在0附近大於1.如果增加數字2,隨機數字更可能在0附近。 –

+0

我怎樣才能得到線性遞減分佈? 'var rand = 2 * Math.random()'? – wwaawaw

0

看看泊松分佈,也許你可以用它自己的目的,本質上是泊松分佈是不確定的,但它的發生有一定的頻率:維基百科有這個一個很好的介紹性的信息: http://en.wikipedia.org/wiki/Poisson_distribution

算法:

algorithm poisson random number (Knuth): 
init: 
    Let L ← e−λ, k ← 0 and p ← 1. 
do: 
    k ← k + 1. 
    Generate uniform random number u in [0,1] and let p ← p × u. 
while p > L. 
return k − 1. 
相關問題