Random whole number between two integers JavaScript

In JavaScript, generating a random whole number between two integers is a common task that requires combining Math.random() with Math.floor() to ensure we get integers within the specified range.

Understanding the Problem

We need to create a function that returns a random integer between two given numbers (inclusive). For example, if we want a random number between 1 and 5, the possible outputs are: 1, 2, 3, 4, or 5.

The Math.random() Method

Math.random() generates a random decimal number between 0 (inclusive) and 1 (exclusive). We need to transform this to get integers in our desired range.

console.log(Math.random()); // Example: 0.7834592847
console.log(Math.random()); // Example: 0.2341876543
console.log(Math.random()); // Example: 0.9876543210
0.7834592847
0.2341876543
0.9876543210

Algorithm

Step 1: Generate a random decimal between 0 and 1 using Math.random()

Step 2: Multiply by the range size (max - min + 1)

Step 3: Add the minimum value to shift the range

Step 4: Use Math.floor() to round down to the nearest integer

Implementation

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

// Test the function with different ranges
console.log("Random between 1-10:", getRandomInt(1, 10));
console.log("Random between 50-100:", getRandomInt(50, 100));
console.log("Random between -5 to 5:", getRandomInt(-5, 5));

// Multiple calls to show randomness
console.log("Five random numbers between 1-6:");
for (let i = 0; i < 5; i++) {
    console.log(getRandomInt(1, 6));
}
Random between 1-10: 7
Random between 50-100: 83
Random between -5 to 5: 2
Five random numbers between 1-6:
4
1
6
3
2

How It Works

Let's break down the formula Math.floor(Math.random() * (max - min + 1) + min):

  • Math.random() gives us 0 ? value
  • Multiply by (max - min + 1) to get 0 ? value
  • Add min to shift range: min ? value
  • Math.floor() ensures we get integers from min to max (inclusive)

Alternative Method Using Math.ceil()

function getRandomIntAlt(min, max) {
    return Math.ceil(Math.random() * (max - min) + min);
}

console.log("Alternative method:", getRandomIntAlt(1, 10));
console.log("Alternative method:", getRandomIntAlt(1, 10));
Alternative method: 8
Alternative method: 3

Comparison

Method Formula Recommended
Math.floor() Math.floor(Math.random() * (max - min + 1) + min) ? Yes
Math.ceil() Math.ceil(Math.random() * (max - min) + min) Less common

Complexity

Time Complexity: O(1) - constant time operation

Space Complexity: O(1) - uses only a few variables

Conclusion

The standard approach using Math.floor(Math.random() * (max - min + 1) + min) reliably generates random integers within any specified range. This method ensures equal probability for all numbers in the range.

Updated on: 2026-03-15T23:19:00+05:30

284 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements