function getRandomIntInclusive(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min; //The maximum is inclusive and the minimum is inclusive
}
var min = 10, max = 25;
//inclusive random (can output 25)
var random = Math.round(Math.random() * (max - min) + min);
//exclusive random (max number that can be output is 24, in this case)
var random = Math.floor(Math.random() * (max - min) + min);
//floor takes the number beneath the generated random and round takes
//which ever is the closest to the decimal
function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min)) + min; //The maximum is exclusive and the minimum is inclusive
}
function ran(min, max, exclude = false) {
let range = max - min + 1;
//if you don't want to exclude any number then just returns numbr in range
if (!exclude) return Math.floor(Math.random() * range + min);
//If you want to exlude only one number then here's O(1) solution.
//number from range 1-4 but never get 3:
//get number between 1-3 and if its 3 then return 4
if (!exclude?.length) {
let num = Math.floor(Math.random() * (range - 1) + min);
return num == exclude ? range : num;
}
//if you want to exlude multiple numbers here's O(n) solution:
//foreach number in range i want to check if its not on exlude list
//but i dont want to use indexOf or find functions as they are O(n) making this O(n^2)
//i create object with keys being exluded numbers as reading object by key is O(1)
// ?. operator returns null if such key doesnt have value
let badNum = {};
for (let i = 0; i < exclude.length; i++) {
badNum[exclude[i]] = true;
}
let googNum = [];
for (let i = 0; i < range; i++) {
if (!badNum?.[i]) googNum.push(i);
}
return googNum[Math.floor(Math.random() * googNum.length)];
}
const randomNumber = ({ min, max } = { min: 0, max: 1 }) => {
if (min >= max) {
throw Error(
`minimum value (${min}) is larger than or equal to maximum value (${max})`
);
}
return Math.floor(Math.random() * Math.floor(max - min + 1) + min);
};
// Usage: random number between 10 and 100.
const n = randomNumber({ min: 10, max: 100 });