Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/08/2011, 09:30
mitrofan
 
Fecha de Ingreso: mayo-2010
Mensajes: 128
Antigüedad: 14 años, 9 meses
Puntos: 13
Meter en array numeros aleatorios sin repetir

Hola, estoy intentando hacer un código en que se vayan generando números aleatorios y me los guarde un array, pero sin repetir lo números.
Esto es lo que he hecho:

Código PHP:
$max=9;
$aleatorio=mt_rand(1,$max); //Genereamos aleatorio
    
$usados[]=$aleatorio//Guardamos el primero en un array ya que el primero no puede estar repetido
    
    
    
for ($i=0$i<6$i++)
    {
    
$aleatorio=mt_rand(1,$max); //Generamos aleatorio
    
echo $usados[$i];
        
        
$contador=0;
        for (
$n=$contador$n<count($usados)+1$n++) //Recorre desde el comienzo hasta el final del array
        
{    
        
            while (
$aleatorio==$usados[$n]) //Si se repiten generamos el aleatorio y ponemos reiniciamos el contador para que vuelva a comprobar en el for
            
{    
            
$aleatorio=mt_rand(1,$max);
            
$contador=0;
            }
            
        }    
        
        
    
$usados[]=$aleatorio;    //No esta repetido, luego guardamos el aleatorio
    

El caso es que aunque no repite tanto como dejando usando solo la función rand y guardando si que a veces me repite algún número. Creo que el error esta en que no reinicia el contador después del while con lo cual no vuelve a comprobar todos los números del array.