【发布时间】:2013-12-08 06:37:06
【问题描述】:
仅供参考:随机 == 伪随机
A.生成统一随机数时,我可以指定一个范围,即:
(Math.random()-Math.random())*10+5
//generates numbers between -5 and 15
B.生成一组具有高斯式正态随机性的随机值:
//pass in the mean and standard deviation
function randomNorm(mean, stdev) {
return Math.round((Math.random()*2-1)+(Math.random()*2-1)+(Math.random()*2-1))*stdev+mean);
}
//using the following values:
{
mean:400,
standard_deviation:1
//results in a range of 397-403, or +-range of 3
},
{
mean:400,
standard_deviation:10
//results in a range of 372-429, or +-range of 30
},
{
mean:400,
standard_deviation:25
//results in a range of 326-471, or +-range of 75
}
每个都给我一个大约标准偏差*(+-3)的范围(假设我让程序运行更长时间)。
C.我可以按如下方式计算这个范围:
- 假设我想要一个 300-500 的范围,所以 var total_range = 200;
- 我的平均值是 400,我的 +-范围是 total_range/2 (var r = 100)
- 因此 standard_deviation 将是 r/3 或在本例中为 33.333。
这似乎有效,但我不知道我在用数学做什么,所以我觉得自己像个白痴,这个解决方案感觉很笨拙,并不完全准确。
我的问题: 是否有一些我正在跳舞的公式可以在这里帮助我?我的要求如下:
- 必须能够准确定义数字范围。
- 必须在 JavaScript 中尽可能高效地完成。
我想也许我已经很接近了,但还不完全在那里。
【问题讨论】:
标签: javascript math random gaussian normal-distribution