在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
我想这是因为我在内部调用函数的次数太多了。这意味着我的代码不好。
有人可以帮我逻辑吗?什么是确保我的数字不重复的最佳方法?
相关分类