-3

我正在尝试生成一个限制数字数组中不存在的随机数。

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 ();
4

3 回答 3

3

如果您的问题是关于如何实现“重试”部分,只需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 的只是$.inArray方法,我建议 您改用(对于不兼容的浏览器,可以在此处Array.prototype.indexOf使用 shim )。

于 2013-05-14T16:14:13.023 回答
2

您需要一个while循环来测试是否rand在您的restricted数组中,如果是,则重新生成一个新的随机数:

var rand;
do { 
    rand = Math.floor(Math.random() * 10); // re-randomize
} while ($.inArray(rand, restricted) > -1);
return rand;

http://jsfiddle.net/mblase75/dAN8R/

于 2013-05-14T16:11:45.060 回答
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();
于 2013-05-14T16:12:56.393 回答