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).