Оператор генератора случайных чисел в цикле дает мне одно и то же число каждый раз. Javascript - PullRequest
0 голосов
/ 16 февраля 2010

Итак, я пишу этот цикл, и в нем есть генератор случайных чисел. Почему он выбирает только одно случайное число для всех итераций цикла вместо нового случайного числа? вот мой код:

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

это в браузере Chrome. Что-то не так с этим кодом?

Ответы [ 5 ]

3 голосов
/ 16 февраля 2010

Если я запускаю этот код, я получаю случайные числа:

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>

Нам нужно немного больше контекста.

3 голосов
/ 16 февраля 2010

Что-то не так с этим кодом?

«Это абсолютно ничего не значит» - это первое, что не так с ним.

Если это ваша «упрощенная» версия кода, вы «упростили» важный контекст (например, как вы пытаетесь использовать randNum).

2 голосов
/ 16 февраля 2010

Возможно, вы используете переменную randNum внутри анонимной функции в цикле.

Поскольку цикл всегда присваивает одну и ту же переменную, любые вызовы любой из анонимных функций после завершения цикла будут видеть только последний номер.

Чтобы исправить это, переместите тело цикла в отдельную функцию (именованную или анонимную).

2 голосов
/ 16 февраля 2010

Пробовал с выводом 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>

1-й раз, когда я получаю вывод, как 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

выглядит хорошо для меня, возможно, проблема в другом месте.

1 голос
/ 16 февраля 2010

удалите дублирующую переменную в randNum, но на моем chrome это работает в обоих случаях. Используя версию Mac. Вероятно, это связано с тем, как вы используете randNum, вы используете его как-то вне? Ваш код ничего не делает (например, пишет число) атм.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...