首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按下随机数,但从没有相同的数字

按下随机数,但从没有相同的数字
EN

Stack Overflow用户
提问于 2020-04-13 02:35:49
回答 2查看 73关注 0票数 2

我想在点击button时随机选择一个数字,但我不希望相同的数字被随机化,有什么解决方案吗?

代码语言:javascript
复制
  $('button').click(function(){
    var nomeri = Math.floor(Math.random() * 100);
}
代码语言:javascript
复制
<button>დამაკლიკე</button>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-13 02:42:36

您可以使用一个递归函数生成一个唯一的数字。

我使用一个数组来实现这个函数,这个数组将保存以前使用的数字和Math.random()的值,以生成随机数。

步骤:

步骤1.创建一个function

步骤2:生成一个随机数

步骤3:检查数组中是否存在

步骤4:如果已经存在,那么再次调用函数,否则我们就有唯一的随机数。

如果函数超过最大随机数,那么它将返回一个负数。你可以根据你的需要来处理这个问题,你可以重置数组或者类似的东西。

尝尝这个。

代码语言:javascript
复制
$('button').click(function(){
  var nomeri = genRandomNum();
  console.log(nomeri);
});

let random = [];
function genRandomNum() {
  let randNum = Math.floor(Math.random() * 100);
  if (random.length >= 100) {
    return -1;
  } else if (random.includes(randNum)) {
    return genRandomNum();
  } else {
    random.push(randNum);
    return randNum;
  }
}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button>Random Number</button>

票数 2
EN

Stack Overflow用户

发布于 2020-04-13 03:19:41

下面是一种更有效的方法。这样做可能会导致许多函数调用,特别是在数组中添加了大量可用的数字之后。每次它找到一个在再次调用函数之前使用过的数字,以搜索一个尚未使用的随机数。找到一个未使用的号码可能需要很长时间。

这样,当您第一次调用该函数时,您将得到一个未使用的数字。

1)将所有可能的答案添加到数组中。2)然后从该数组返回一个随机值。3)然后修改数组以排除已经返回的值。

请参阅:array.splice()

代码语言:javascript
复制
const allPossibleValues = [];
for(let i = 0; i < 100; i++){
  allPossibleValues.push(i);
}
 
 $('button').click(function(){
    if(allPossibleValues.length){
      let nomeri = returnRandomValueFromArray();
      console.log(nomeri);
    }
    else {
      console.log("No more values left");
    }
});

function returnRandomValueFromArray() {
  const randomIndex = Math.floor(Math.random() * allPossibleValues.length);
  const randomValue = allPossibleValues[randomIndex];
  allPossibleValues.splice(randomIndex, 1);
  return randomValue;
}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button>დამაკლიკე</button>

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

https://stackoverflow.com/questions/61180775

复制
相关文章

相似问题

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