# Generate random number between two numbers in JavaScript

ID : 388

viewed : 205

### Top 5 Answer for Generate random number between two numbers in JavaScript

95

``function randomIntFromInterval(min, max) { // min and max included    return Math.floor(Math.random() * (max - min + 1) + min) }  const rndInt = randomIntFromInterval(1, 6) console.log(rndInt)``

What it does "extra" is it allows random intervals that do not start with 1. So you can get a random number from 10 to 15 for example. Flexibility.

89

### Important

The following code works only if the minimum value is `1`. It does not work for minimum values other than `1`.

If you wanted to get a random integer between 1 (and only 1) and 6, you would calculate:

``    const rndInt = Math.floor(Math.random() * 6) + 1     console.log(rndInt)``

Where:

• 1 is the start number
• 6 is the number of possible results (1 + start (6) - end (1))

73

# Math.random()

Returns an integer random number between min (included) and max (included):

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

Or any random number between min (included) and max (not included):

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

Useful examples (integers):

``// 0 -> 10 Math.floor(Math.random() * 11);  // 1 -> 10 Math.floor(Math.random() * 10) + 1;  // 5 -> 20 Math.floor(Math.random() * 16) + 5;  // -10 -> (-2) Math.floor(Math.random() * 9) - 10; ``

** And always nice to be reminded (Mozilla):

Math.random() does not provide cryptographically secure random numbers. Do not use them for anything related to security. Use the Web Crypto API instead, and more precisely the window.crypto.getRandomValues() method.

62

Other solutions:

• `(Math.random() * 6 | 0) + 1`
• `~~(Math.random() * 6) + 1`

Try online

53

TL;DR

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

To get the random number `generateRandomInteger(-20, 20);`

EXPLANATION BELOW

We need to get a random integer, say X between min and max.

Right?

i.e min <= X <= max

If we subtract min from the equation, this is equivalent to

0 <= (X - min) <= (max - min)

Now, lets multiply this with a random number r which is

0 <= (X - min) * r <= (max - min) * r

Now, lets add back min to the equation

min <= min + (X - min) * r <= min + (max - min) * r

Now, lets chose a function which results in r such that it satisfies our equation range as [min,max]. This is only possible if 0<= r <=1

OK. Now, the range of r i.e [0,1] is very similar to Math.random() function result. Isn't it?

The Math.random() function returns a floating-point, pseudo-random number in the range [0, 1); that is, from 0 (inclusive) up to but not including 1 (exclusive)

For example,

# Case r = 0

`min` + 0 * (`max`-`min`) = min

# Case r = 1

`min` + 1 * (`max`-`min`) = max

# Random Case using Math.random 0 <= r < 1

`min` + r * (`max`-`min`) = X, where X has range of min <= X < max

The above result X is a random numeric. However due to Math.random() our left bound is inclusive, and the right bound is exclusive. To include our right bound we increase the right bound by 1 and floor the result.

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

# To get the random number

`generateRandomInteger(-20, 20)`;