Foros del Web » Programando para Internet » PHP »

numeros aleatorios diferentes

Estas en el tema de numeros aleatorios diferentes en el foro de PHP en Foros del Web. Hola a todos, Estoy tratando se conseguir generar una lista de numeros del 0 al 9 siendo todos diferentes (es decir ningun numero debe ser ...
  #1 (permalink)  
Antiguo 20/07/2009, 21:08
 
Fecha de Ingreso: octubre-2008
Mensajes: 140
Antigüedad: 15 años, 6 meses
Puntos: 1
numeros aleatorios diferentes

Hola a todos,

Estoy tratando se conseguir generar una lista de numeros del 0 al 9 siendo todos diferentes (es decir ningun numero debe ser repetido). El codigo que probe fue este:

Código PHP:
<?php
srand
(time());
for (
$i=0$i<10$i++){
      
$random = (rand()%9);
      for(
$j=0;$j<$i;$j++)
      {
      if(
$slot[j]==$random){$r=1;}
      else{
$r=0;}
      }
      
$slot[] = $random;
      if(
$r==1){$i=$i-1;}
}
?>
Pero aun asi me entrega numeros repetidos de vez en cuando.

Gracias por la ayuda

atte
  #2 (permalink)  
Antiguo 20/07/2009, 21:25
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: numeros aleatorios diferentes

Prueba así:
Código php:
Ver original
  1. $aleatorios = array();
  2. $max = 10;
  3. $i = 0;
  4. do {
  5.       $aleatorio = rand();
  6.       if (!in_array($aleatorio, $aleatorios)) {
  7.              $aleatorios[] = $aleatorio;
  8.              $i++;
  9.       }
  10.       if ($i == $max) {
  11.              break;
  12.       }
  13. } while(true);

Saludos.
  #3 (permalink)  
Antiguo 20/07/2009, 21:28
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: numeros aleatorios diferentes

Puedes hacerlo asi, es mucho mas sencillo de lo que quieres hacer

Código php:
Ver original
  1. <?php
  2. $array = range(0,9);
  3. shuffle($array);
  4.  
  5. //Esto es opcional
  6. foreach($array as $v){
  7.     echo $v."<br />";
  8. }
  9. ?>
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:04.