2014-01-20 83 views
0

我有一個公式可以在給定範圍[x,y]中生成一個隨機整數。生成一個非均勻分佈的隨機數

rand = Math.floor(x + Math.random()*(y-x+1)); 

而且我希望生成的整數有更高的接近中端的機會。 Here is an interesting approach

我想改變我的問題的解決方案(數字傾向於中端,而不是四肢),但我正在努力與公式。

beta = Math.sin(Math.random()*Math.PI)^2; 
rand = Math.floor(x + beta*(y-x+1)); 

我不明白beta是如何工作的。根據this graph產生的數字是不是更接近0.5的可能性更高? beta總是返回相同的數字。我沒有正確實施Math.random()嗎?我發誓JavaScript現在正在與我混淆。

+3

'^ 2'是不是你所期望的,但有點'XOR'。您需要'Math.pow(...,2)' – zerkms

回答