猿问

在JS中生成非重复随机数

在JS中生成非重复随机数

我有以下功能

function randomNum(max, used){
 newNum = Math.floor(Math.random() * max + 1);

  if($.inArray(newNum, used) === -1){
   console.log(newNum + " is not in array");
   return newNum;

  }else{
   return randomNum(max,used);
  }}

基本上我创建一个1到10之间的随机数,并检查是否已经创建了该数字,方法是将其添加到数组并检查新创建的数字。我通过将其添加到变量来调用它。

UPDATED:for(var i=0;i < 10;i++){

   randNum = randomNum(10, usedNums);
   usedNums.push(randNum);

   //do something with ranNum}

这有效,但在Chrome中我收到以下错误:

Uncaught RangeError: Maximum call stack size exceeded

我想这是因为我在内部调用函数的次数太多了。这意味着我的代码不好。

有人可以帮我逻辑吗?什么是确保我的数字不重复的最佳方法?


慕勒3428872
浏览 613回答 3
3回答
随时随地看视频慕课网APP
我要回答