随机高斯分布
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
最有效