Numeros ó Strings aleatorios.

Iniciado por Xt3mP, Agosto 13, 2010, 05:02:00 AM

Tema anterior - Siguiente tema

0 Miembros y 2 Visitantes están viendo este tema.

Números ó Strings aleatorios.

Esta vez hablaré acerca de unas funciones que en lo particular es la mejor para mi, ya que te genera aleatoriamente un número dependiendo de la función que utilizes.

Hablaré sobre dos funciones (inclusive alguno solo conocerá la primera):
rand() = Puede recibir dos parámetros, si no se especifíca ninguno, el valor número más alto que puede generar es 32767.
mt_rand() = Puede recibir dos parámetros, si no se especifíca ninguno, el valor número más alto que puede generar es 2147483647.

¿Notan la diferencia? Tienen una diferencia númerica de 2,147,450,880, rand solo alcanza a cifras de 5 números, por otro lado mt_rand alcanza cifras de 10 números.
-----------------------------------------------------
La función rand() tiene una derivada para mostrar el valor númerico mas alto que puede generar llamada getrandmax(), puede recibir dos parámetros, desde que número empieza hasta que número termina:

Código: php

<?php
echo rand(); //Genera un numero aleatorio entre 0 y 32767.
echo getrandmax(); //Genera un numero con valor a 32767.
echo rand(0,15); //Genera un numero entre 0 y 15, estos dos números pueden variar siempre y cuando no sobre pasen los 32767.
/*
Daria:
17812 //El aleatorio de 0 y 32767
32767 //El maximo
13 //Entre 0 y 15
*/
?>

-----------------------------------------------------
Por otro lado, mt_rand() tiene una capacidad de 2147483647, pero esto no quiere decir que actue de diferente forma, recibe los mismos parámetros:

Código: php

<?php
echo mt_rand(); //Genera un numero aleatorio entre 0 y 2147483647.
echo mt_getrandmax(); //Genera un numero con valor a 2147483647.
echo mt_rand(24565,4976854); //Genera un numero entre 24565 y 4976854, estos dos números pueden variar siempre y cuando no sobre pasen los 2147483647.
/*
Daria:
1660000551 //El aleatorio entre 0 y 2147483647
2147483647 //El maximo
289095 //Entre 24565 y 4976854
*/
?>


Cabe mencionar que si a rand() le ponemos por ejemplo: rand(4564,65798712) tambien te lo genera, pero si utilizamos getrandmax() no pasará los 32767.
-----------------------------------------------------
¿Como se puede utilizar el rand? ¿Ó para que es utilizado en la mayor parte de los casos? Harémos uso de un array, pero antes explicaré que se hará para este ejemplo.
Crearémos dos arrays, uno con todas las letras del abecedario y otro con palabras "al azar" (realmente no es al azar, porque las escribiré directamente xd) para que con el uso del rand se generen automáticamente:

Código: php

<?php
$abe = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'); //26
$pal = array('Xt3mP', '[email protected]', 'Mexico', '17 de edad', 'Banking', 'Robar tarjetas de credito', 'abc123', 'xD');//8
$rand_pal = rand(0,7); //Igual que el de arriba.
// Crearemos un directorio cualquiera con "nombres al azar".
$directorio = rand(0,9).$abe[rand(0,25)].rand(0,9).$abe[rand(0,25)].rand(0,9).$abe[rand(0,25)]; //Generaria 4i9y5f
@mkdir ($directorio);
// Ahora "mostraremos una password con palabras anteriormente definidas"
echo "Hola usuario, tu nueva password es: ".$pal[rand(0,7)]; //[email protected]
?>


Como pueden observar, se utilizo un rand dentro de un array para que dentro de los valores anteriormente definidos del array los tomara al azar. Esto es de mucha utilidad cuando tienes cientos de passwords predefinidas por el usuario ó estás creando algún tipo de concurso por sorteo generar los "boletos" al azar, tambien puedes generar la clave al azar, por ejemplo:

Código: php

<?php
$abe = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'); //26
$pass = $abe[rand(0,25)].rand().$abe[rand(0,25)].rand().$abe[rand(0,25)].rand();
/*
Daria:
i21636u10402s13552
Ya solo es cuestion de meterle base de datos para hacer un update, etc.
*/
?>

Solo es cuestion de que usen la imaginación con todas y cada una de las funciones que nos brinda PHP.
-----------------------------------------------------
Espero esto los motive a seguir en PHP, saludos.
Cada vez que me das Karma me motivas