> Manuales > Manual de PHP

Cómo generar números aleatorios en PHP. Generación mediante las funciones rand() y mt_rand() disponibles en PHP.

Números aleatorios en PHP

La generación de números aleatorios es algo básico y muy habitual en cualquier aplicación. Por supuesto PHP no es una excepción. En este artículo vamos a abordar la generación de los números aleatorios con diveros mecanismos y ejemplos. Es importante ya que PHP dispone de una serie de funciones para generar números aleatorios con diversas prestaciones. Las vamos a ver explicando sus usos y diferencias de funcionamiento.

Uso de la función rand() para números aleatorios

La forma más básica de generar un número aleatorio en PHP consiste en dos pasos:

//alimentamos el generador de aleatorios
srand (time());
//generamos un número aleatorio
$numero_aleatorio = rand(1,100);

Como vemos, en el primer paso se utiliza la función srand() para alimentar la semilla de generación de números aleatorios.

El paso de invocar a srand() es necesario sólo en versiones anteriores a PHP 4.2.0, pues a partir de esta versión este paso se hace automáticamente.

A la función srand() hace falta enviarle un valor para alimentar la semilla. Nosotros enviamos lo que devuelve time(), que es un timestamp con el número de segundos desde el inicio de 1970.

Luego generamos un número aleatorio con la función rand() que recibe un par de valores opcionalmente, que son el mínimo y el máximo de los números aleatorios generados. En el caso anterior se consigue un número aleatorio entre 1 y 100, incluyendo estos dos valores entre los posibles.

Si no se indica nada a rand(), el valor mínimo será cero. El valor máximo depende de la plataforma donde se esté ejecutando PHP, por ejemplo en Windows el valor máximo sería 32786 (esto puede depender también de la versión de PHP). Si queremos asegurarnos que este valor máximo sea mayor, entonces conviene definir los valores máximo y mínimo al llamar a la función.

Generación avanzada de números aleatorios con mt_rand()

PHP tiene otras funciones para generar los números aleatorios, aparte de las que hemos visto, que utilizan unos algoritmos mejorados para conseguir números al azar.

La función de PHP mt_rand() genera aleatorios con un algoritmo que es de promedio 4 veces más rápido que el algoritmo que utiliza rand().

El uso de mt_rand() es similar:

//alimentamos el generador de aleatorios
mt_srand (time());
//generamos un número aleatorio
$numero_aleatorio = mt_rand(0,5);

Primero se debe utilizar mt_srand() para empezar la generación de números aleatorios con una semilla.

Nuevamente, el paso de usar mt_srand() a partir de PHP 4.2.0 no es necesario, porque se hace automáticamente.

Luego se generan los números aleatorios con mt_rand(), a la que le pasamos el rango de valores que queremos obtener, con los parámetros mínimo y máximo. En nuestro ejemplo obtendremos valores aleatorios entre el 0 y el 5.

Conclusión sobre números aleatorios en PHP

Como has podido comprobar, la generación de números aleatorios en PHP es muy sencilla, ya que simplemente necesitamos invocar las funciones que el propio lenguaje nos proporciona.

Ahora ya se trata de realizar las transformaciones necesarias para conseguir adaptar los números generados a nuestras necesidades. Por ejemplo, podrías necesitar números aleatorios tengan decimales. En este caso podemos probar el truco de la FAQ: Números aleatorios decimales en PHP

Miguel Angel Alvarez

Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...

Manual