所以我有一个for循环,循环随机次数:
for(var i = 0; i<Math.floor(Math.random()*100); i++){
var num = i
}
有效,但似乎偏向偏低。只运行几次'num'似乎永远不会返回20以上的任何东西。将我们的域名更改为Math.random()* 1000似乎没有返回任何高于40的值。
这只是有点乱,所以不需要任何实际工作,只是对解释感到好奇。
以下是工作代码的快速链接,可以自行测试:http://jsfiddle.net/Lv45r/1/
答案 0 :(得分:4)
在每个循环的版本中,都会生成一个新的随机数。这导致了对较低数字的偏见。要解决这个问题,首先要创建你的号码,然后循环:
for(var i = 0, max=Math.floor(Math.random()*100); i<max; i++){
var num = i
}
或
var max = Math.floor(Math.random()*100);
for(var i = 0; i<max; i++){
var num = i
}
答案 1 :(得分:2)
问题是,确定循环次数的随机数正在每次次迭代中进行评估。将代码更改为以下内容:
$(document).ready(function(){
$('button').click(function(){
var loops = Math.floor(Math.random()*100);
for(var i=0; i<loops; i++){
var num = i
}
alert(num);
})
})
更新了小提琴:http://jsfiddle.net/Lv45r/3/