Generate a Random Number Between Two Numbers in JavaScript

To generate a random number between two numbers, we can use the Math.random() function in combination with the Math.floor() function.

The Math.random() function generates a random floating-point number between 0(inclusive) and 1. Whereas, the Math.floor() function rounds down the given number to its nearest integer. We can use these two functions in combination to generate a random number in a given range.

The following example generates a random number between 10(inclusive) and 50(inclusive):

const min = 10;
const max = 50;

// Generate random number
let random = Math.floor(Math.random()*(max - min + 1) + min);

console.log(random); 
// Output: 34

How does it work?

As I previously said, the Math.random() function generates a random floating-point number between 0(inclusive) and 1.

console.log(Math.random());  // 0.41
console.log(Math.random());  // 0.90
console.log(Math.random());  // 0.30
console.log(Math.random());  // 0.16

But, we don’t want the random number to be generated between 0 and 1, instead, we want to generate it in a given range.

In our case, we want the random number between 10(min) & 50(max). Therefore, we have to multiply the number generated by the Math.random() function with (max – min + 1).

This will generate a random number between 0 and (max – min + 1) i.e. 0 and (50 – 10 + 1) = 41(not inclusive):

console.log(Math.random()*(max-min+1));  // 1.19
console.log(Math.random()*(max-min+1));  // 27.88
console.log(Math.random()*(max-min+1));  // 37.31

As we also want to set a minimum limit to the number, therefore, we have to add the min range to it. This will result in a floating-point number between min and max limit. We have set it to 10 & 50.

const min = 10;
const max = 50; 

// Generates a floating-point number between 10 & 50
console.log(Math.random()*(max-min+1) + min);  // 10.17
console.log(Math.random()*(max-min+1) + min);  // 23.49
console.log(Math.random()*(max-min+1) + min);  // 48.91

At last, we have to round down these floating-point numbers to their nearest integers. Therefore, we have used the Math.floor() function.

console.log(Math.floor(15.98));  // 15
console.log(Math.floor(15.51));  // 15
console.log(Math.floor(15.00));  // 15

Thanks for reading.

Author

  • Manoj Kumar

    Hi, My name is Manoj Kumar. I am a full-stack developer with a passion for creating robust and efficient web applications. I have hands-on experience with a diverse set of technologies, including but not limited to HTML, CSS, JavaScript, TypeScript, Angular, Node.js, Express, React, and MongoDB.