首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成3个非重复值

生成3个非重复值
EN

Stack Overflow用户
提问于 2020-02-03 22:33:13
回答 3查看 60关注 0票数 0

我必须生成3个随机数从0到9每2秒,它的工作,但会有实例,我会得到重复的值,例如4 7 7。如果有人能指出我的错误那就太好了,谢谢

代码语言:javascript
复制
if (firstNum == secondNum || firstNum == thirdNum) {
  firstNum = Math.floor((Math.random() * 9) + 1);
} else if (secondNum == firstNum || secondNum == thirdNum) {
  secondNum = Math.floor((Math.random() * 9) + 1);
} else if (thirdNum == firstNum || thirdNum == secondNum) {
  thirdNum = Math.floor((Math.random() * 9) + 1);
}
EN

回答 3

Stack Overflow用户

发布于 2020-02-03 22:50:55

保持简单

代码语言:javascript
复制
setInterval(function(){
  let first_number  = parseInt(Math.random()*10),
    second_number = null,
    third_number  = null;

  while (second_number == third_number || first_number == second_number || third_number == second_number){
    second_number = parseInt(Math.random()*10);
    third_number = parseInt(Math.random()*10);
  }

  console.log(first_number, second_number, third_number)
},2000)

票数 1
EN

Stack Overflow用户

发布于 2020-02-03 22:42:17

你需要去掉那些"else“。如果firstNum等于secondNum或thirdNum,则它不会验证其他值是否相等,因为它在第一个if时停止。

试试这个:

代码语言:javascript
复制
if (firstNum == secondNum || firstNum == thirdNum) {
  firstNum = Math.floor((Math.random() * 9) + 1);
} 
if (secondNum == firstNum || secondNum == thirdNum) {
  secondNum = Math.floor((Math.random() * 9) + 1);
} 
if (thirdNum == firstNum || thirdNum == secondNum) {
  thirdNum = Math.floor((Math.random() * 9) + 1);
}
票数 0
EN

Stack Overflow用户

发布于 2020-02-03 23:05:22

当你只寻找3个数字时,If语句可以工作,但如果你寻找更多的数字,这将是一场噩梦。请考虑以下解决方案:

代码语言:javascript
复制
const uniqueNumbers = [];

while (uniqueNumbers.length < 3) {
	const number = Math.floor((Math.random() * 9) + 1);
  
  if (!uniqueNumbers.includes(number)) {
  	uniqueNumbers.push(number)
  }
}

console.log(uniqueNumbers)

请注意,上面的代码是一个简单的示例,它没有验证范围。如果你不小心(比如说,你想要1-10范围内的20个唯一的数字),你可能会陷入无限循环。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60041315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档