我看到很多代码都是这样生成随机数的
// random integers in the interval [1, 10]
Math.floor(Math.random()*10 + 1)
无论如何,我觉得我错过了什么。为什么人们不使用更简洁的方式呢?
Math.ceil(Math.random()*10);
?
我尝试测试随机性,目前看来是真实的。
事实上,下面的代码
// will generate random integers from 1 to 4
var frequencies = [ 0, 0, 0, 0, 0 ]; // not using the first place
var randomNumber;
for ( var i = 0; i < 1*1000*1000; ++i ) {
randomNumber = Math.ceil(Math.random()*4);
frequencies[randomNumber]++;
}
for ( var i = 1; i <= 4; ++i ) {
console.log(i +": "+ frequencies[i]);
}
打印输出
1: 250103
2: 250161
3: 250163
4: 249573
我错过了什么?
快速离题:是否有更简洁的方法来声明和初始化 frequencies?就像 C++ 中的 frequencies[5] = { 0 };
...
Math.ceil(Math.random()*10);
生成[0,10]
,尽管0
的概率非常非常小... - PasserbyMath.random()
永远不会返回1。 - Passerbynew Array(size)
,但它不会初始化为0,而是为undefined
。 - jwueller