Random natural number within range function Typescript returns me not so random numbers

I am currently working on a function which is supposed to generate numbers within a specific range. Example: If the minimum of the range is 1 and the maximum is 5 then it should return a number between 1 and 5 or equal to 1 and 5.

This is the code I have so far:

function getRandomNumber(min: number, max: number): number {
    max = max + 1; // in order to include the max value
    return Math.floor(Math.random() * (max - min) + min);
}

This function does work as intended but unfortunately some numbers get generated quite often in sequence. Example: I define a range of 1 to 5, the output of the function will be something like: 1,1,1,1,1,5,5,5,1,1,1,1,5,1,1,1,5,1,1,4,4,2,2,3,1,1,1,1,5,1,5,1,5,5,1,1,1,1,3

As we can see all the numbers of the range are being included but for some reason certain numbers e.g 1 and 5 in this case get generated often in sequence and are generally being generated more often than they should to be classified as ‘random’ (imo).

My question is if I have done anything wrong in my code or if this is supposed to be normal behavior.

>Solution :

It looks like it is equally distributed …

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

const count = { 1: 0, 2: 0, 3: 0, 4: 0, 5: 0 };

for (let i = 0; i < 1e6; i++) count[getRandomNumber(1, 5)]++;

console.log(count);

Leave a Reply