javascript——为什么在循环外生成一个随机数会导致它总是相同的?

ocebsuys  于 2021-09-23  发布在  Java
关注(0)|答案(2)|浏览(689)

当我在while循环中创建一个随机数作为局部变量时,一切都起作用,但当我生成一个随机数作为全局变量时,我就会陷入无限循环。
我不明白这会有什么不同。目标是用while循环输出所有小于0.7的随机数。
下面是创建无限循环的代码:

  1. let rnd = Math.random();
  2. let continue = true;
  3. while (continue) {
  4. console.log(rnd);
  5. if (rnd > 0.7) {
  6. continue = false;
  7. alert(rnd + ' is bigger than 0.7!');
  8. }
  9. }

下面是有效的代码(唯一改变的是在while循环中生成随机数)。

  1. let continue = true;
  2. while (continue) {
  3. let rnd = Math.random();
  4. console.log(rnd);
  5. if (rnd > 0.7) {
  6. continue = false;
  7. alert(rnd + ' is bigger than 0.7!');
  8. }
  9. }

我不想用另一种循环来创建它,我只是想更好地理解while循环。

pvcm50d1

pvcm50d11#

因为你申报的时候 Math.random() 作为一个变量,它使用一个不变的随机值创建一个绑定。示例:0.8。
如果它小于或等于0.7,那么它将导致一个无限循环,因为值不会随着每次迭代而改变。
在第二个例子中,它工作得很好,因为它是在本地声明的,并且它的值随着每次迭代而变化。
希望你能理解。

6l7fqoea

6l7fqoea2#

  1. let rnd = Math.random();
  2. let continue = true;
  3. while (continue) {
  4. console.log(rnd);
  5. if (rnd > 0.7) {
  6. continue = false;
  7. alert(rnd + ' is bigger than 0.7!');
  8. }
  9. }

这里,在while循环之前,随机数生成器只执行一次。如果th随机数不大于0.7,continue将始终为真,并且它将是一个无限循环。
但是,如果在while循环中本地生成随机数,则在每个循环中都会生成一个新的数,因此您只需等待rnd数>0.7。

相关问题