Este trozo de código genera 4 números aleatorios diferentes dentro de un rango comprendido de 0 a $total, ¿alguna idea para optimizarlo?:
 
 srand((double)microtime()*1000000);
 $ale1 = rand(0, $total);
 
 srand((double)microtime()*1000000);
 $ale2 = rand(0, $total);
 
 if($ale2 == $ale1)
 {
  while($ale2 == $ale1)
  {
   srand((double)microtime()*1000000);
   $ale2 = rand(0, $total);
  }
 }
 
 srand((double)microtime()*1000000);
 $ale3 = rand(0, $total);
 
 if(($ale3 == $ale1) || ($ale3 == $ale2))
 {
  while(($ale3 == $ale1) || ($ale3 == $ale2))
  {
   srand((double)microtime()*1000000);
   $ale3 = rand(0, $total);
  }
 }
 
 srand((double)microtime()*1000000);
 $ale4 = rand(0, $total);
 
 if(($ale4 == $ale1) || ($ale4 == $ale2) || ($ale4 == $ale3))
 {
  while(($ale3 == $ale1) || ($ale3 == $ale2) || ($ale4 == $ale3))
  {
   srand((double)microtime()*1000000);
   $ale4 = rand(0, $total);
  }
 }
 
Un saludo a todos. 
  
 
