隨機高斯分佈

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;
}

StackOverflow 文件

影象顯示了 v 的不同值的隨機值的分佈。左上角是標準單 Math.random() 呼叫,右下角是 Math.random() 總和 8 次。這是使用 Chrome 的 5,000,000 個樣本

這種方法在 v<5 最有效