> Manuales > Taller de Javascript

Taller en el que se crea una función para generar números aleatorios en lenguaje Javascript.

En Javascript disponemos de la clase Math, muy útil cuando queremos hacer cálculos matemáticos de cierta complejidad. Dicha clase está explicada y documentada en un capítulo del manual de Javascript II. Para el que lo necesite, también tenemos explicaciones de lo que son las clases y los objetos.

En este taller de Javascript vamos a construir una simple función para crear un número aleatorio, entre un mínimo y un máximo, que podremos utilizar luego en otros scripts más complejos.

Aquí tenemos el código que hace uso del método random de la clase Math para obtener un número aleatorio con Javascript.

var aleatorio = Math.random()

Así hemos creado una variable aleatorio a la que asignamos el resultado de ejecutar el método random de la clase Math. El número aleatorio que obtenemos siempre estará comprendido entre 0 y 1.

Si deseamos obtener un número aleatorio en otro rango lo podemos conseguir con un poco de matemáticas y la clase Math. Para ilustrarlo vamos a hacer una función que devuelve un número aleatorio comprendido en un intervalo. El intervalo lo recibe como parámetro con dos variables, una para el límite por la parte inferior y otra para la el límite por la parte superior.

function aleatorio(inferior,superior){
    var numPosibilidades = superior - inferior
    var aleat = Math.random() * numPosibilidades
    aleat = Math.round(aleat)
    return parseInt(inferior) + aleat
}

Nota: Si lo prefieres con números decimales mira esta otro código. Te da un número entre el min y el max (excluyendo llegar al máximo). Osea, si pides números entre 1 y 10 en realidad estarías solicitando entre 1 y 9.9999999.

function numeroAleatorioDecimales(min, max) {
  var num = Math.random() * (max - min);
  return num + min;
}


La función que hemos hecho es muy sencilla, pero funciona perfectamente para todos los tipos de intervalos que podamos pasarle, tanto con números positivos como negativos. Lo primero que hacemos es obtener el número de posibilidades restando al límite superior el inferior. Luego multiplicamos dicho numero de posibilidades por el número aleatorio obtenido (que está entre 0 y 1), con lo que obtenemos un número aleatorio entre 0 y el número de posibilidades.

Nota: Esta función tiene un pequeño problema, pues los números aleatorios que devuelve no tienen las mismas posibilidades de salir. Para solucionarlo, un visitante ha incluido un comentario en el artículo que se aconseja leer.

El número tiene un montón de decimales, y en este ejemplo deseamos obtener un número entero, sin decimales. Por eso luego utilizamos el método round() de la clase Math, que nos da el entero más próximo. Como el número todavía está entre 0 y el número de posibilidades tenemos que sumarle el límite inferior, con lo que estará dentro del rango que deseamos. Este último valor será en que devuelva la función.

Esta función se puede ver en marcha en una página a parte. En el ejemplo hemos construido un pequeño formulario que podemos rellenar con el míninmo y el máximo y cuando apretemos sobre el botón se mostrará el valor aleatorio en el campo de abajo del todo.

Un ejemplo de lo que podemos hacer con un número aleatorio puede ser crear un enlace aleatorio en una página web. Lo podemos ver en el ejemplo Enlace aleatorio en Javascript. Además, en este ejemplo se crea el número aleatorio de manera ligeramente distinta a como lo hemos visto ahora, lo que puede ser interesante para aprender mejor a usar los métodos de la clase Math.

Nota: Insisto, leeros los comentarios que acompañan a este artículo (un poco más abajo de estas líneas) ya que ofrecen scripts mejorados para crear números aleatorios. Además, hay algún comentario con un script para asegurarse que las posibilidades de aparición de cada valor aleatorio sean las mismas.

Destaco el código:

function aleatorio(inferior,superior){
       var resAleatorio = Math.floor((Math.random() * (superior - inferior + 1)) + inferior);
      return resAleatorio;
}


Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online Escu...

Manual