我有以下功能
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);
}
}
Run Code Online (Sandbox Code Playgroud)
基本上我创建一个1到10之间的随机数,并通过将其添加到数组并检查新创建的数字来检查是否已创建该数字.我通过将其添加到变量来调用它.
UPDATED:
for(var i=0;i < 10;i++){
randNum = randomNum(10, usedNums);
usedNums.push(randNum);
//do something with ranNum
}
Run Code Online (Sandbox Code Playgroud)
这有效,但在Chrome中我收到以下错误:
Uncaught RangeError: Maximum call stack size exceeded
Run Code Online (Sandbox Code Playgroud)
我想这是因为我在内部调用函数的次数太多了.这意味着我的代码不好.
有人可以帮我逻辑吗?什么是确保我的数字不重复的最佳方法?
我遇到了一个挑战,我需要一个在给定范围内返回随机数的函数0 - X.不仅如此,我还要求返回的数字是唯一的 ; 不复制先前调用该函数时已返回的数字.
可选地,当完成此操作时(例如,范围已经"耗尽"),只需返回范围内的随机数.
怎么会这样做呢?