¡Advertencia!
Este tema no ha tenido respuestas en más de un mes. Recuerda que si deseas añadir una nueva debes cumplir con las normas de la web.
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:


<?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:


<?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:


<?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', 'xt3mp@und3rgr0und.org', '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)]; //xt3mp@und3rgr0und.org
?>


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:


<?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.

¡Soy el fantasma de Habtium! Me dedico a reemplazar aquellas cuentas que han sido eliminadas. 👻
abc123 m... Ese nick me resulta familiar... xD Lo porbaré a ver qué tal.

¡Soy el fantasma de Habtium! Me dedico a reemplazar aquellas cuentas que han sido eliminadas. 👻
Esto qué es: @mkdir ($directorio);

Y otra cosa, ¿cabe la posibilidad de que esos números se repitan o son siempre diferentes?
Esto qué es: @mkdir ($directorio);

A veces es necesario buscarlo en google y tal, así aprendes investigando también xD...
mkdir() lo que hace es crear una carpeta. El @ por delante es para que cuando dé error, no lo muestre en la pantalla.

Y otra cosa, ¿cabe la posibilidad de que esos números se repitan o son siempre diferentes?

Sí, pienso que existe la posibilidad de que se repitan, no sé cuanto sería el promedio pero tú que eres matemático podrías hacer la prueba xD. Por lo tanto podrías hacer alguna ecuación matemática algo inteligente para que no sea así... Algo como poner a correr 2 mt_rand(), luego sumas las variables o algo por el estilo.

A veces es necesario buscarlo en google y tal, así aprendes investigando también xD...
mkdir() lo que hace es crear una carpeta. El @ por delante es para que cuando dé error, no lo muestre en la pantalla.
Sí, pienso que existe la posibilidad de que se repitan, no sé cuanto sería el promedio pero tú que eres matemático podrías hacer la prueba xD. Por lo tanto podrías hacer alguna ecuación matemática algo inteligente para que no sea así... Algo como poner a correr 2 mt_rand(), luego sumas las variables o algo por el estilo.

Después de ver el otro tutorial supe que era xDDD.
Pues la probabilidad es clara xDD 1/32767 es la probabilidad de que se repita. Puedes hacer eso, sumar las variables, aunque yo más que sumarlas las multiplicaría.
El problema que tiene rand() Es que digamos si tenemos:


<?php
$rand = rand();
echo $rand."<br />";
echo $rand;
?>


Desde que le asignamos el valor a la variable $rand ya mientras se repita el script el rand será el mismo, así que es preferible cada vez que utilizemos el rand no asignarlo en variables directamente, si no que por ejemplo:


<?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();
?>


En ese código si hubieramos puesto $rand = rand(); y luego en vez de $abe[rand(0,25)] hubieramos puesto $rand en todos los $rand sería el mismo número, entonces si ponemos rand(0,25) el ciclo se haría 3 veces en ese caso (del script) y cada ciclo será un número diferente.

Y como leíste por hay, mkdir es para crear directorios y el @ es para no mostrar error en pantalla.

¡Soy el fantasma de Habtium! Me dedico a reemplazar aquellas cuentas que han sido eliminadas. 👻