我见过很多生成随机数的代码,例如
// random integers in the interval [1, 10]
Math.floor(Math.random()*10 + 1)
Run Code Online (Sandbox Code Playgroud)
无论如何,我觉得我错过了一些东西。为什么人们不使用更简洁的方式
Math.ceil(Math.random()*10);
Run Code Online (Sandbox Code Playgroud)
?
我试图测试随机性,到目前为止似乎是正确的。
其实后面的代码
// 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]);
}
Run Code Online (Sandbox Code Playgroud)
打印出来
1: …Run Code Online (Sandbox Code Playgroud) 很好奇为什么math.floor比math.ceil我做随机词生成和签入时返回更好的结果console.log。
为什么不能math.ceil完美运行?是否存在math.ceil与与不兼容的问题,math.random或者是我如何分配字符串元素的数组编号(项目)?
我必须在 0 和 1 之间生成随机双数。我如何使用 C 来做到这一点?我尝试生成 0 到 100 万之间的整数,然后将结果除以 1M,但效果不佳。