var*_*ame 5 javascript random for-loop
刚尝试在Javascript中尝试生成一个有趣的东西,同时在for循环中生成一个随机数(就像它叫做什么?).
所以,如果我要写这样的代码:
for (var i = 0; i < 20; i++) {
var count = 0;
for (var j = 0; j < Math.floor(Math.random() * 20); j++) {
count++;
}
console.log(count);
}
Run Code Online (Sandbox Code Playgroud)
它将返回如下结果:
9
5
8
3
3
2
6
8
4
4
5
6
3
3
5
3
4
5
3
11
Run Code Online (Sandbox Code Playgroud)
但是,如果我在第二个for循环之前在变量中生成一个随机数:
for (var i = 0; i < 20; i++) {
var count = 0;
var loopEnd = Math.floor(Math.random() * 20 + 1);
for (var j = 0; j < loopEnd; j++) {
count++;
}
console.log(count);
}
Run Code Online (Sandbox Code Playgroud)
它将返回如下结果:
11
13
14
2
19
19
17
19
2
18
5
15
18
2
1
19
16
15
13
20
Run Code Online (Sandbox Code Playgroud)
到底发生了什么?它让我困惑了一会儿.for循环中的Math.random()是否在每次迭代后生成一个新的随机数?循环是否运行代码,迭代并检查条件,并在每次检查条件时生成一个新的随机数?这是发生了什么,这就是为什么控制台中的数字小于在for循环之前在变量中使用Math.random()的原因?
在第一个示例的内部循环中:
...
for (var j = 0; j < Math.floor(Math.random() * 20); j++) {
count++;
}
...
Run Code Online (Sandbox Code Playgroud)
j < Math.floor(Math.random() * 20)每次循环的迭代都会评估终止条件,因此终止值会随着调用而改变每次迭代,从而Math.random()使循环更有可能提前终止。
| 归档时间: |
|
| 查看次数: |
7295 次 |
| 最近记录: |