JavaScript: generar un número aleatorio en el rango

En este tutorial, veremos cómo generar un número aleatorio en el rango usando JavaScript con ejemplos.

Introducción

Nosotros, como desarrolladores de software, a menudo nos topamos con situaciones en las que necesitamos insertar una dosis de aleatoriedad en nuestro código.

En este artículo, veremos cómo generar números aleatorios en JavaScript. También abordaremos algunos métodos incorporados para tratar con números aleatorios. Al final, haremos un buen uso de este conocimiento escribiendo una función para simular un dado de seis caras.

Generación de números aleatorios en JavaScript

Math.random() en JavaScript genera un número aleatorio de coma flotante (decimal) entre 0 y 1 (incluido 0, pero no 1). Comprobemos esto llamando al:

1
console.log(Math.random())

Esto generará un número de coma flotante similar a:

1
0.9261766792243478

Esto es útil si se trata de porcentajes, ya que cualquier valor entre 0 y 1, redondeado a dos decimales, se puede considerar como un percentil.

Generación de números enteros aleatorios en el rango

Sin embargo, generalmente no tratamos con números de punto flotante en el rango de 0 a 1. Entonces, veamos una forma de redondear números de coma flotante.

Podemos redondear hacia abajo un número de punto flotante usando Math.floor(). De manera similar, podemos redondear un número a través de la función Math.ceil():

1
2
console.log(Math.floor(3.6))
console.log(Math.ceil(3.6))

Esto nos dará la salida:

1
2
3
4

Generemos un número aleatorio entre min y max, sin incluir max:

1
2
3
4
function randomNumber(min, max){
    const r = Math.random()*(max-min) + min
    return Math.floor(r)
}

Alternativamente, podríamos haber incluido max con la función Math.ceil() en su lugar.

Estamos multiplicando con (max-min) para transformar el rango [0,1) en [0, max-min). Luego, para obtener un número aleatorio en el rango requerido, agregamos min. Finalmente, estamos redondeando esto a un número entero usando Math.floor().

Llamemos a este método varias veces y observemos los resultados:

1
2
3
for (var i = 0; i < 10; i++) {
  console.log(randomNumber(0, 10))
}

Esto generará algo similar a:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
8
3
3
0
1
1
8
2
8
8

Conclusión

La generación de números pseudoaleatorios en un programa se puede usar para simular la imprevisibilidad de un enemigo en el juego, o para la aleatorización de bosques en un juego de bloques que todos conocemos y amamos. También se puede usar para simular entradas aleatorias mientras se prueba otro programa que haya escrito.

De cualquier manera, generar un número aleatorio es una herramienta importante en el conjunto de herramientas de cualquier ingeniero, y debe expandirse tanto como sea posible con diferentes métodos y algoritmos de generación. Este artículo fue solo el primer paso para aprender a generar números aleatorios.