隨機高斯分佈
Math.random()
函式應該給出標準差接近 0 的隨機數。當從卡片組中挑選或模擬骰子卷時,這就是我們想要的。
但在大多數情況下,這是不現實的。在現實世界中,隨機性傾向於圍繞共同的正常值聚集。如果在圖表上繪製,則獲得經典鐘形曲線或高斯分佈。
使用 Math.random()
函式執行此操作相對簡單。
var randNum = (Math.random() + Math.random()) / 2;
var randNum = (Math.random() + Math.random() + Math.random()) / 3;
var randNum = (Math.random() + Math.random() + Math.random() + Math.random()) / 4;
向最後新增隨機值會增加隨機數的方差。除以你新增的次數,將結果標準化為 0-1 的範圍
新增多個 random 是混亂的,一個簡單的功能將允許你選擇所需的方差。
// v is the number of times random is summed and should be over >= 1
// return a random number between 0-1 exclusive
function randomG(v){
var r = 0;
for(var i = v; i > 0; i --){
r += Math.random();
}
return r / v;
}
影象顯示了 v 的不同值的隨機值的分佈。左上角是標準單 Math.random()
呼叫,右下角是 Math.random()
總和 8 次。這是使用 Chrome 的 5,000,000 個樣本
這種方法在 v<5
最有效