Generate random number between two numbers in JavaScript

ID : 388

viewed : 205

Tags : javascriptrandomjavascript





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

vote vote

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.

vote vote

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))
vote vote

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.

vote vote

62

Other solutions:

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

Try online

vote vote

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);

Top 3 video Explaining Generate random number between two numbers in JavaScript







Related QUESTION?