Cómo generar un número aleatorio entre dos números en JavaScript

Moataz Farid 12 octubre 2023
  1. Generar un número aleatorio entre 1 y el valor definido por el usuario en JavaScript
  2. Generar un número aleatorio entre dos números en JavaScript
Cómo generar un número aleatorio entre dos números en JavaScript

Este tutorial aprenderá a generar un número aleatorio entre dos números en JavaScript. Usaremos el método Math.random() que genera un número flotante aleatorio entre 0.0 y 0.999.

Generar un número aleatorio entre 1 y el valor definido por el usuario en JavaScript

Podemos generar un número aleatorio en JavaScript usando un generador de números aleatorios - Math.random(), multiplicando el número flotante generado por el número máximo que queremos generar. Math.random()* max genera un número aleatorio entre 0 y max.

function generateRandom(max) {
  return Math.random() * max;
}

console.log('1st try: ' + generateRandom(5));
console.log('2nd try: ' + generateRandom(5));
console.log('3rd try: ' + generateRandom(5));
console.log('4th try: ' + generateRandom(5));

Resultado:

1st try: 3.3202340813091347
2nd try: 1.9796467067025836
3rd try: 3.297605748406279
4th try: 1.1006700756032417

Si queremos obtener sólo el resultado en formato de número entero, podemos usar Math.floor(), este método devuelve el mayor número entero menor o igual que el número de entrada.

console.log(Math.floor(1.02));
console.log(Math.floor(1.5));
console.log(Math.floor(1.9));
console.log(Math.floor(1));

Resultado:

1
1
1
1

Usando el método Math.floor() podemos obtener nuestros números enteros generados aleatoriamente,

function generateRandomInt(max) {
  return Math.floor(Math.random() * max);
}

console.log('1st Integer try: ' + generateRandomInt(9));
console.log('2nd Integer try: ' + generateRandomInt(9));
console.log('3rd Integer try: ' + generateRandomInt(9));
console.log('4th Integer try: ' + generateRandomInt(9));

Resultado:

1st Integer try: 8
2nd Integer try: 5
3rd Integer try: 7
4th Integer try: 0

Generar un número aleatorio entre dos números en JavaScript

Si también queremos tener un valor mínimo definido por el usuario, necesitamos cambiar la ecuación de Math.random() * max a Math.random() * (max-min)) +min. Usando esta ecuación, el valor devuelto es un número aleatorio entre min y máx.

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

console.log('1st min and max try: ' + generateRandomInt(2, 9));
console.log('2nd min and max try: ' + generateRandomInt(2, 9));
console.log('3rd min and max try: ' + generateRandomInt(2, 9));
console.log('4th min and max try: ' + generateRandomInt(2, 9));

Resultado:

1st min and max try: 6
2nd min and max try: 2
3rd min and max try: 8
4th min and max try: 3

En el caso de que nos interese que el valor max se incluya en el ámbito de nuestro generador aleatorio, necesitamos cambiar la ecuación a (Math.random() * (max+1 - min)) +min. Añadiendo 1 a max-min incluirá el máximo en el rango y Math.floor() siempre garantizará que este valor no sea más que el max.

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

console.log('1st min and max included try: ' + generateRandomInt(2, 9));
console.log('2nd min and max included try: ' + generateRandomInt(2, 9));
console.log('3rd min and max included try: ' + generateRandomInt(2, 9));
console.log('4th min and max included try: ' + generateRandomInt(2, 9));

Resultado:

1st min and max included try: 3
2nd min and max included try: 7
3rd min and max included try: 9
4th min and max included try: 6

Artículo relacionado - JavaScript Number