我正在尝试生成一个在限制数组中不存在的随机数。
JS
var restricted = [3, 4, 7];
function getRand () {
rand = Math.floor(Math.random() * 10);
if ($.inArray(rand, restricted) === -1) {
return rand;
} else {
try again
}
}
rand = getRand ();
答案 0 :(得分:2)
您需要一个while
循环来测试rand
数组中是否有restricted
,如果是,则重新生成一个新的随机数:
var rand;
do {
rand = Math.floor(Math.random() * 10); // re-randomize
} while ($.inArray(rand, restricted) > -1);
return rand;
答案 1 :(得分:2)
如果您的问题是关于如何实施“再试一次”部分,请以递归方式调用getRand
:
var restricted = [3, 4, 7];
function getRand() {
var rand = Math.floor(Math.random() * 10);
if ($.inArray(rand, restricted) === -1) {
return rand;
} else {
return getRand();
}
}
var rand = getRand();
此外,如果您使用的是jQuery for $.inArray
方法,我建议使用Array.prototype.indexOf
代替(对于不兼容的浏览器,可以使用垫片here)。
答案 2 :(得分:1)
试试这个 -
var restricted = [3, 4, 7];
function getRand () {
var gotRand = false;
var rand;
while(!gotRand){ // loop until you got random number
rand = Math.floor(Math.random() * 10);
if ($.inArray(rand, restricted) === -1) {
gotRand = true;
}
}
return rand;
}
rand = getRand();