在JavaScript中,从具有固定平均值、SD和范围的正态分布生成随机数?
我学会了如何从这个答案中生成一个具有固定范围、平均值和sd的随机数列表,但我也学会了math.random()不遵循正态分布。我的问题是,在JavaScript中,是否可以生成一个遵循正态分布、具有固定范围、均值和标准差的随机数列表?i、 从2到100的正态分布中随机抽取10个数字;平均值应该是20,标准差应该是10 对于正态分布部分,我尝试从正态分布中提取随机数(0到1),以替换Math.random()函数:在JavaScript中,从具有固定平均值、SD和范围的正态分布生成随机数?,javascript,random,normal-distribution,Javascript,Random,Normal Distribution,我学会了如何从这个答案中生成一个具有固定范围、平均值和sd的随机数列表,但我也学会了math.random()不遵循正态分布。我的问题是,在JavaScript中,是否可以生成一个遵循正态分布、具有固定范围、均值和标准差的随机数列表?i、 从2到100的正态分布中随机抽取10个数字;平均值应该是20,标准差应该是10 对于正态分布部分,我尝试从正态分布中提取随机数(0到1),以替换Math.random()函数: function randn_normal() { var u = 0,
function randn_normal() {
var u = 0, v = 0;
while (u === 0) u = Math.random(); //Converting [0,1) to (0,1)
while (v === 0) v = Math.random();
let num = Math.sqrt(-2.0 * Math.log(u)) * Math.cos(2.0 * Math.PI * v);
num = num / 10.0 + 0.5; // Translate to 0 -> 1
if (num > 1 || num < 0) return randn_normal(); // resample between 0 and 1
return num;
}
函数randn_normal(){
var u=0,v=0;
而(u==0)u=Math.random();//将[0,1]转换为(0,1)
而(v==0)v=Math.random();
设num=Math.sqrt(-2.0*Math.log(u))*Math.cos(2.0*Math.PI*v);
num=num/10.0+0.5;//转换为0->1
如果(num>1 | | num<0)返回randn_normal();//在0和1之间重新采样
返回num;
}
这是否回答了您的问题?另请参见