生成数字但在javascript中排除一个数字

时间:2013-09-28 20:09:45

标签: javascript

我需要在一个范围之间生成一个随机数,但不包括一个特定的数字 我以为我可以这样做,但它不起作用。

function randNum(num){
    var randNumber=Math.floor(Math.random()*num)+1;
    if(randNumber==2){
        randNum(num);
    }else{
        alert(num);
    }
}
randNum(4);

有什么问题?
感谢。

5 个答案:

答案 0 :(得分:2)

假设您要输出随机数而不是num - 参数,您只需将警报更改为:

alert(randNumber)

喜欢这个小提琴http://jsfiddle.net/3urFC/

答案 1 :(得分:0)

您是否正在尝试提醒您生成的randNum?现在,您每次都会提醒函数参数(在本例中为数字4)。我想你想把它改成警报(randNumber)。

答案 2 :(得分:0)

Math.random返回0到1之间的数字。请参阅the documentation on MDN

另外,see this question about generating a random number in a specific range

所以,你有两个问题:一,你没有在你认为的范围内生成一个随机数,两个,你没有使用你生成的随机数。

made this fiddle做了类似你所描述的事情。

function getRandomInt (min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
}

function generateRandomWithExclusion(exclude, min, max) {
    var num = getRandomInt(min, max);

    while (num === exclude) {
        num = geRandomInt(min, max);   
    }

    return num;
}

generateRandomWithExclusion(2, 0, 10) // returns an integer between 0 and 10 that is not 2

您传递了要排除的数字以及minmax的范围,并获得该范围内的随机整数,而不是您要排除的数字。

答案 3 :(得分:0)

正如其他人所说的那样,有一个台风。

我也会这样重新排列:

function randNum(num){
    var numberToExclude=2;
    var randNumber=Math.floor(Math.random()*(num-1))+1;

    if(randNumber>=numberToExclude) {
        randNumber+=1;
    }

    alert(randNumber);
}
randNum(4);

这是一个JSFidle

http://jsfiddle.net/2F5Md/1/

答案 4 :(得分:0)

function randNum(num) {
    var randNumber;
    do { randNumber = Math.floor(Math.random()*num)+1; } while(randNumber==2);
    return randNumber;
}
randNum(4);