Números Aleatorios en PHP

Es común la necesidad de generar números aleatorios, ya sea a mostrar post o productos aleatorios. PHP como cualquier otro lenguaje permite la generación de números aleatorios de manera sencilla con las funciones rand y mt_rand.

Utilizando la función rand()
Antes de generar el número aleatorio lo primero es generar inicializar el generador de números con la función srand(), por que de lo contrario corremos el riesgo de generar los mismos valores. Entonces vamos a generar un número entero entre 0 y 500.

srand(time());
echo rand(0,500);

Utilizando la función mt_rand()
Esta función es semejante a la anterior pero es mucho mas rápida y con un mejor algoritmo de generación de aleatorios.

mt_srand(time());
echo mt_rand(0,500);

Generar aleatorio decimal
Las funciones anteriores generan valores enteros, si lo que deseamos son números aleatorios decimales, podemos dividir el resultado entre un factor. Por ejemplo si deseamos generar una imagen con una transparencia aleatorios, debemos generar un número entre 0 y 1 pues esos son los valores aceptados para la transparencia.

function randomAlpha() {
   srand(time());
   $rnd = rand(0,100);
   return $rnd/100;
}
echo randomAlpha(); // 0.27

Generar Colores Aleatorios
Los colores están expresados por 6 números hexadecimales, entonces generaremos uno a uno los 6 valores aleatorios entre 0 y 16, luego los convertiremos en números hexadecimales. Luego podemos crear un función llamada randomColor:

function randomColor() {
	srand(time());
	$color = "";
    for ($i=0; $i<6; $i++){
        $color .=  dechex(rand(0,15));
    }
    return "#".$color;
}
[/php]

Luego podemos utilizar esta función para generar un texto con un color aleatorio, para ello guardamos el color generado en una variable para posteriormente mostrarla.

[php]
$rndcolor = randomColor();
echo "
".$rndcolor."
";

Pueden ver el ejemplo funcionando en: random.php. Como pueden ver con un poco de imaginación podemos generar diferentes valores aleatorios, solamente depende de nuestra creatividad.

[download id=»17″ autop=»false»]

Comentarios Total 4 comentarios

Bitacoras.com
Publicado: 19/07/2009 8:42 pm

Información Bitacoras.com…

Valora en Bitacoras.com: Es común la necesidad de generar números aleatorios, ya sea a mostrar post o productos aleatorios. PHP como cualquier otro lenguaje permite la generación de números aleatorios de manera sencilla con las funciones rand y mt_ra…..

alberto
Publicado: 20/07/2009 7:10 pm

A partir de php 4.2 no es necesario usar srand()

shakaran
Publicado: 21/07/2009 4:46 pm

Hice un post parecido al tuyo, y caí en el mismo fallo que tu. En la documentación de PHP dice que rand() es más rápido que mt_rand() pero en realidad no es cierto, porque la documentación esta desactualizada.

Se hicieron importantes mejoras en rand() y en realidad es más rapido rand().

Tambien comente en mi post la función array_rand() que parece que te las has dejado ;)

Hugo
Publicado: 09/02/2013 3:00 am

Hola unijimpe, tengo un lio, esque en mi pagina quiero poner que la gente baje archivos pero con un codigo de descarga y pues ando buscando tutoriales o algo que me indiquen como programar esto,

por ejemplo si quiero crear 100 codigos desde mi panle de control, indicarlo y que se creen 100 codigos y se inserten a una base de datos para que esos codigos cuando se ingresen pues se revisen en la base de datos y permitan o no la descarga…. sera que me puedas dar una orientación o algun script que conozcas o un tutorial…. de verdad que no se me ocurre nada, tengo conocimientos de php y sql pero ps son basicos…. ojala puedas asisitirme.

Muchas gracias !!!

 

Comentar

En este blog los comentarios están moderados, serán mostrados cuando el administrador los apruebe. Por favor, evita comentarios ofensivos u obscenos por que no serán aprobados.
Si deseas publicar código fuente debes hacerlo entre las etiquedas <code> y </code>, además debes reemplazar los carácteres < por &lt; y > por &gt;.

(Requerido)

(Requerido, no será publicado)

(Requerido)

(Tags aceptados: <a> <em> <strong> <code> <ul> <li>)