循环中的随机数生成器语句每次都给我相同的数字。使用Javascript

时间:2010-02-16 02:38:40

标签: javascript loops

所以我正在写这个循环,我有一个随机数生成器。为什么它只为循环的所有迭代选择一个随机数而不是一个新的随机数?这是我的代码:

for ( i = 0; i < 25; i++ ) {
 var randNum = 0;
 var randNum = Math.floor(Math.random() * 5);
}

这是在chrome浏览器中。这段代码有问题吗?

5 个答案:

答案 0 :(得分:3)

  

此代码有问题吗?

“它绝对没有”将是它的第一件事。

如果这是您的“简化”版本的代码,那么您已经“简化”了重要的上下文(例如您尝试和使用randNum的方式)。

答案 1 :(得分:3)

如果我运行该代码,我会得到随机数:

1 2 2 0 2 1 2 2 1 0 1 0 3 4 2 1 0 3 3 1 1 4 1 2 4

你是如何阅读变量的?我用了这段代码:

<script type="text/javascript">
for ( i = 0; i < 25; i++ ) {
 var randNum = 0;
 var randNum = Math.floor(Math.random() * 5);
 document.write(randNum + "\n");
}
</script>

我们需要更多的背景。

答案 2 :(得分:2)

使用jQuery输出尝试它并且它可以工作:

<html>
    <head>
        <script src="http://code.jquery.com/jquery-latest.js"></script>
    </head>
    <body>
      <p></p>
        <script>
        for ( i = 0; i < 25; i++ ) {
             var randNum = 0;
             var randNum = Math.floor(Math.random() * 5);
              $("p").append(" "+randNum);
        }

        </script>
    </body>
</html>

我第一次获得输出 4 2 4 1 1 3 3 2 0 1 4 0 3 4 3 1 4 1 1 2 1 1 2 4 2

第二: 1 4 1 3 1 3 0 0 2 1 2 1 4 3 2 0 3 3 0 4 4 3 3 4 4

对我来说很好,也许问题在不同的地方。

答案 3 :(得分:2)

你可能在循环内的匿名函数中使用randNum变量。

由于循环总是分配给同一个变量,所以在循环结束后对任何匿名函数的任何调用都只会看到最后一个数字。

要解决此问题,请将循环体移动到单独的函数(命名或匿名)。

答案 4 :(得分:1)

删除randNum中的重复var,但在我的chrome上它适用于两种情况。使用mac版本。这可能与你如何使用randNum有关,你是否在某种程度上使用它?你的代码什么都不做(比如写数字)atm。