javascript - How to generate random numbers without including a set number?
问题描述
I'm just trying to generate 8 random numbers from 1 to 25. My issue is that I already have a variable and its value is 14, with that being said my question is how to generate random numbers from 1 to 25 and if one them is equal to 14 then replace it with another random number? at the end, I want to have 8 random numbers in my array and I don't want to include 14 in it. Can anyone tell me what I'm missing or how to make this more accurate? and sometimes I only end up with 7 elements in my array, does anyone knows why?
Here's my code:
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);
解决方案
更仔细地研究你已经实现的逻辑。if...else
您恰好通过循环 9 次(不是 8 次),并且由于控制流,每次迭代都有互斥的结果。
num
如果它等于,则重新分配currentvar
(您应该通过var
从第二个分配中删除来正确执行此操作),或者将其添加到数组中,而不是在一次迭代中同时进行。这就是else
意思,您可能希望do...while
分配一个循环,num
直到它不等于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 === currentvar
:
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);
推荐阅读
- spring - HibernateException:使用 DefaultSchemaNameResolver 需要 Dialect 提供正确的 SQL 语句/命令
- php - 存储时关系上的 Laravel 5.0 sync() 不起作用
- python - 如何在 python/selenium 中切换 iframe 工作?
- c - 用于使用指向结构的指针循环结构成员
- php - 每次出现用不同的值替换相同的字符串
- r - 如何停止 ggrepel 标签在 R/ggplot2 中的 gganimate 帧之间移动?
- python - 我在 Python 中遇到了这个错误,EnvironmentNotWritable 错误
- python - 如何在条形图上绘制附加值作为 matplotlib 中的段?
- powershell - 如何在具有其他伴奏(和管理员权限)的 ps1 中启动其他 ps1?
- git - Git - 将分支*精确*同步到新主人的文件?