Math.random() method is an excellent built-in method for producing random numbers. When
Math.random() is executed, it returns a random number that can be anywhere between 0 and 1. The 0 is included and 1 is excluded.
Generating a random floating point number between 0 and 1
Math.random() method will return a floating point (decimal) number greater than or equal to 0 and less than (but never equal to) 1. In other words
0 <= x < 1. For example:
console.log(Math.random()); // 0.7069207248635578 console.log(Math.random()); // 0.765046694794209 console.log(Math.random()); // 0.14069121642698246
(Of course, the numbers returned will be different every time. This will be assumed for all following examples - different results will happen on each pass.)
To get a random number between a larger range multiply the result of
Math.random() by a number.
Generating a random floating point number between 0 and a specified max
Usually you do not need random numbers between 0 and 1 - you need larger numbers or even integers.
For example, if you want a random floating point number between 0 and 10, you could use:
var x = Math.random()*10; console.log(x); // 4.133793901445541
Generating a random floating point number within a range
If you need a random floating point number that ranges between two specific numbers, you could do something like this:
var min = 83.1; var max = 193.36; var x = Math.random()*(max - min)+min; console.log(x); // 126.94014012699063
Generating a random integer between 0 and a max
Often you need integers. To do this you will have to use some other methods from the
Math.floor() (rounds down to the nearest integer) and
Math.ceil() (rounds up to the nearest integer).
For example, if you need to select randomly from an array of 10 elements, you would need a random number between 0 and 9 inclusive (remember that arrays are zero indexed).
var x = Math.floor(Math.random()*10); console.log(x); // 7
Math.random() will never return exactly 1, so
Math.random()*10 will never return exactly 10. This means that after rounding down, the result will always be 9 or less.)
Generating a random integer between 1 and a max
If you need a random number with the minimum number being 1 (for example picking a random day in January) you could use the
var x = Math.ceil(Math.random()*31); console.log(x); // 23
Another way would have been to use the previous function (using
Math.floor()) and add 1 to it:
var x = Math.floor(Math.random()*31)+1; console.log(x); // 17
Generating a random integer within a range
Lastly, occasionally you need a random integer between two specific integers. For example, if you are trying to pick raffle tickets and you know the numbers of the lowest and largest number:
var min = 1718; var max = 3429; var x = Math.floor(Math.random()*(max-min+1)+min); console.log(x); //2509
How random is Math.random()?
It may be pointed out that the number returned by
Math.random() is a pseudo-random number as no computer can generate a truly random number, that exhibits randomness over all scales and over all sizes of data sets. However, the pseudo-random number generated by
Math.random() is usually sufficient for the needs of nearly any program you may write. The not-truly-randomness only becomes apparent in astronomically large number sets or when uncommonly precise decimals are needed.