Random integer in a certain range excluding one number

One possibility is not to add 1, and if that number comes out, you assign the last possible value.

For example:

var result = Math.floor((Math.random() * 100000));
if(result==577) result = 100000;

In this way, you will not need to re-launch the random method, but is repeated. And meets the objective of being a random.


The fastest way to obtain a random integer number in a certain range [a, b], excluding one value c, is to generate it between a and b-1, and then increment it by one if it's higher than or equal to c.

Here's a working function:

function randomExcluded(min, max, excluded) {
    var n = Math.floor(Math.random() * (max-min) + min);
    if (n >= excluded) n++;
    return n;
}

This solution only has a complexity of O(1).