Cuando estamos trabajando con números aleatorios generados es posible que se nos repita uno de los números, más cuanto más acotado sea el conjunto de los números aleatorios con los que trabajemos. Ya vimos como generar una lista de números aleatorios en PHP, ahora vamos a generar una lista de números aleatorios únicos en PHP.
Lo primero, será crear el array que va a contener la lista:
$valores = array();
En este caso no podemos utilizar un bucle de control finito como sería un for, ya que, a priori, no podemos saber cuantas veces necesitamos llamar a la función rand. Es por ello que definiremos una variable de control que nos ayude a controlar la lista de números aleatorios únicos.
$x = 0;
Esta variable la iremos incrementando cada vez que encontremos un número aleatorio único.
Ahora montamos el bucle que controlará dicha variable. En el bucle $num representa el número máximo de números aleatorios únicos que queremos generar.
while ($x<$num) {...}
Lo siguiente será generar el número aleatorio con rand. Por ejemplo, de 1 a 100.
$num_aleatorio = rand(1,100);
Lo siguiente será realizar el control de si ya existe o no dicho número aleatorio. Para comprobar esto miramos dentro del array con la función in_array. Si no se encuentra el nuevo número aleatorio en el array es cuando lo insertamos en el array con array_push e incrementamos nuestra variable de control.
El código quedaría de la siguiente forma:
while ($x<$num) {
$num_aleatorio = rand(1,$max);
if (!in_array($num_aleatorio,$valores)) {
array_push($valores,$num_aleatorio);
$x++;
}
}
Ya solo tendremos que darle utilidad a la lista de números aleatorios únicos en PHP. ¿Para qué lo podrías utilizar?