我只是想生成从 1 到 25 的 8 个随机数。我的问题是我已经有了一个变量,它的值为 14,话虽如此,我的问题是如何生成从 1 到 25 的随机数,并且如果其中一个等于 14,则将其替换为另一个随机数?最后,我想在我的数组中有 8 个随机数,我不想在其中包含 14 个。谁能告诉我我遗漏了什么或如何使它更准确?有时我的数组中只有 7 个元素,有人知道为什么吗?
这是我的代码:
var arr = [];
var currentvar = 14;
for(var i = 0 ; i < 9; i++){
var num = Math.floor(Math.random()*25) + 1;
if(num === currentvar){
num = Math.floor(Math.random()*25) + 1;
}else{
arr.push(num);
}
}
console.log(arr);
更仔细地研究您实现的逻辑。您正好经历了 9 次循环(而不是 8 次),并且由于 if...else
控制流,每次迭代的结果都是互斥的。
或者 如果 num
等于 currentvar
,您可以重新分配它(您应该通过从中删除 var
来正确执行此操作)第二个赋值),或将它添加到数组中,永远不要在一次迭代中同时进行。这就是 else
的意思,您可能需要一个 do...while
循环来分配 num
until 它是不等于 currentvar
。
var arr = [];
var currentvar = 14;
var num;
for (var i = 0; i < 8; i++) {
do {
num = Math.floor(Math.random() * 25) + 1;
} while (num === currentvar);
arr.push(num);
}
console.log(arr);
或者,如果你想保留你的 if...else
语句,你可以减少循环计数器 i
而不是在 时重复循环一次>num === 当前变量
:
var arr = [];
var currentvar = 14;
for (var i = 0; i < 8; i++) {
var num = Math.floor(Math.random() * 25) + 1;
if (num === currentvar) {
i--;
} else {
arr.push(num);
}
}
console.log(arr);