【问题标题】:Random length For loop only generating low numbers随机长度 For 循环仅生成低数字
【发布时间】:2013-03-05 11:05:21
【问题描述】:

所以我有一个循环随机次数的 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/

【问题讨论】:

  • 这看起来像是一个 XY 问题......你想做什么甚至需要随机长度的迭代?

标签: javascript loops random for-loop


【解决方案1】:

在您的版本中,每个循环都会生成一个新的随机数。这导致偏向于较低的数字。要解决这个问题,首先创建您的号码,然后循环:

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
}

【讨论】:

    【解决方案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/

    【讨论】:

      猜你喜欢
      • 2013-10-11
      • 1970-01-01
      • 2018-01-25
      • 1970-01-01
      • 2016-12-05
      • 2019-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多