Explicación del método JavaScript Math.random ()

Método aleatorio

El Math.random()método JavaScript es un excelente método integrado para producir números aleatorios. Cuando Math.random()se ejecuta, 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 Math.random()método devolverá un número de coma flotante (decimal) mayor o igual a 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 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 Mathobjeto, Math.floor()(redondea hacia abajo al número entero más cercano) y Math.ceil()(redondea hacia arriba al número 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

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

Generando un entero aleatorio entre 1 y un máximo

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

var x = Math.ceil(Math.random()*31); console.log(x); // 23

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

var x = Math.floor(Math.random()*31)+1; console.log(x); // 17

Generando un 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 sólo se hace evidente en conjuntos de números astronómicamente grandes o cuando se necesitan decimales excepcionalmente precisos.