Método Aleatorio

El método JavaScript Math.random() es un excelente método integrado para producir números aleatorios. Cuando se ejecuta Math.random(), devuelve un número aleatorio que puede estar entre 0 y 1. Se incluye el 0 y se excluye el 1.

Generando un número de punto flotante aleatorio entre 0 y 1

El método Math.random() devolverá un número de coma flotante mayor o igual que 0 y menor que (pero nunca igual a) 1. En otras palabras, 0 <= x < 1. Por ejemplo:

console.log(Math.random());
// 0.7069207248635578

console.log(Math.random());
// 0.765046694794209

console.log(Math.random());
// 0.14069121642698246

(Por supuesto, los números devueltos serán diferentes cada vez. Esto se asumirá para todos los ejemplos siguientes; se producirán resultados diferentes en cada pasada).

Para obtener un número aleatorio entre un rango mayor, multiplique el resultado de Math.random() por un número.

Generando un número de punto flotante aleatorio entre 0 y un máximo especificado

Por lo general, no necesita números aleatorios entre 0 y 1; necesita números más grandes o incluso enteros.

Por ejemplo, si desea un número de punto flotante aleatorio entre 0 y 10, puede usar:

var x = Math.random()*10;

console.log(x);
// 4.133793901445541

Generando un número de punto flotante aleatorio dentro de un rango

Si necesita un número de punto flotante aleatorio que se encuentre entre dos números específicos, puede hacer algo como esto:

var min = 83.1;
var max = 193.36;

var x = Math.random()*(max - min)+min;

console.log(x);
// 126.94014012699063

Generando un número entero aleatorio entre 0 y un máximo

A menudo necesitas números enteros. Para hacer esto, tendrá que usar algunos otros métodos del objeto Math, Math.floor() (redondea hacia abajo al entero más cercano) y Math.ceil() (redondea hacia arriba al entero más cercano).

Por ejemplo, si necesita seleccionar aleatoriamente de una matriz de 10 elementos, necesitará un número aleatorio entre 0 y 9 inclusive (recuerde que las matrices tienen un índice cero).

var x = Math.floor(Math.random()*10);

console.log(x);
// 7

(Recuerda que Math.random() nunca devolverá exactamente 1, por lo que Math.random()*10 nunca devolverá exactamente 10. Esto significa que después de redondear hacia abajo, el resultado siempre será 9 o menos).

Generando un número entero aleatorio entre 1 y un máximo

Si necesita un número aleatorio con el número mínimo de 1 (por ejemplo, eligiendo un día al azar en enero), puede utilizar el método Math.ceil().

var x = Math.ceil(Math.random()*31);

console.log(x);
// 23

Otra forma habría sido usar la función anterior (usando Math.floor()) y agregarle 1:

var x = Math.floor(Math.random()*31)+1;

console.log(x);
// 17

Generando un número entero aleatorio dentro de un rango

Por último, ocasionalmente necesitas un número entero aleatorio entre dos números enteros específicos. Por ejemplo, si está tratando de elegir boletos de rifa y conoce los números del número más bajo y más grande:

var min = 1718;
var max = 3429;

var x = Math.floor(Math.random()*(max-min+1)+min);

console.log(x);
//2509

¿Qué tan aleatorio es Math.random ()?

Cabe señalar que el número devuelto por Math.random() es un número pseudoaleatorio, ya que ninguna computadora puede generar un número verdaderamente aleatorio, que exhibe aleatoriedad en todas las escalas y en todos los tamaños de conjuntos de datos. Sin embargo, el número pseudoaleatorio generado por Math.random() suele ser suficiente para las necesidades de casi cualquier programa que pueda escribir. La no-verdaderamente-aleatoriedad solo se hace evidente en conjuntos de números astronómicamente grandes o cuando se necesitan decimales excepcionalmente precisos.

Traducido del artículo - JavaScript Math.random() Method Explained