我想生成一個接近於零的數字,並且有一定的一般範圍。例如,假設我希望這個數字在10%到90%的時間內下降,但是有一個很小的可能性,那就是15,20,甚至30個。數字越高,收到的機會就越小。如何生成一個接近零的隨機數?
我試過尋找的東西與關鍵字「加權概率」,但找不到任何東西導致正確的方向。
更新:
我最終使用的箱穆勒變換(見接受的答案)。這裏是我寫的簡單代碼:
const E = 2.71828183;
function getRandomCurvedValue(temp.median, temp.density) {
return this.getCurvedValue(random(0, 1), temp.median, temp.density);
}
function getCurvedValue(temp.value, temp.median, temp.density) {
return temp.median + (temp.density * log(E, (temp.value/(1 - temp.value))));
}
您是否正在生成整數? http://stackoverflow.com/questions/1761626/weighted-random-numbers。 -10是一個有效的輸出? –
你必須更具體,最有可能的選擇一個合適的'pdf'。 – AraK
你想如何分配你的號碼?是唯一的要求,它是在10 90%的時間內? – James