Foros del Web » Programando para Internet » PHP »

Como hago esto ?

Estas en el tema de Como hago esto ? en el foro de PHP en Foros del Web. Hola: Necesito imprimir numeros del 1 al 5 en forma aleatoria, pero con la funcion random() los numeros se pueden repetir. Solo quiero que aparezcan ...
  #1 (permalink)  
Antiguo 17/01/2004, 12:03
 
Fecha de Ingreso: julio-2002
Ubicación: Rancagua - Chile
Mensajes: 494
Antigüedad: 15 años, 5 meses
Puntos: 0
Como hago esto ?

Hola:
Necesito imprimir numeros del 1 al 5 en forma aleatoria, pero con la funcion random() los numeros se pueden repetir.
Solo quiero que aparezcan asi
5
3
2
1
4

Osea, numeros del 1 al 5 sin repetirse.
Hay alguna función que haga eso? A alguien se le ocurre como hacerlo ?

Gracias
Salu2 !!!
__________________
AK.T.I.V.E.tm Live, Never DIE
  #2 (permalink)  
Antiguo 17/01/2004, 13:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues para no repetir números .. puedes guardarte el nº que generas en un array para que al generar tu nuevo numero . si existen en el array .. generas otro.

Código PHP:
<?
$numeros
=array();
$total_a_generar=5;
$min=1;
$max=5;

while (
count($numeros) <= $total_a_generar){
   
$numero=rand($min,$max);
   if (!
in_array($numero,$numeros){
       
$numeros[]=$numero;
   } 
}

// Para ver tus números generados .. recorre el array $numeros.
foreach ($numeros as $numero){
  echo 
$numero.'<br>';
}

?>
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 17/01/2004 a las 13:57
  #3 (permalink)  
Antiguo 17/01/2004, 15:00
 
Fecha de Ingreso: julio-2002
Ubicación: Rancagua - Chile
Mensajes: 494
Antigüedad: 15 años, 5 meses
Puntos: 0
Gracias......


Salu2 !!!
__________________
AK.T.I.V.E.tm Live, Never DIE
  #4 (permalink)  
Antiguo 17/01/2004, 15:26
 
Fecha de Ingreso: julio-2002
Ubicación: Rancagua - Chile
Mensajes: 494
Antigüedad: 15 años, 5 meses
Puntos: 0
Este script necesita de algo mas? utiliza alguna funcion que se deba configurar en php o apache?, puesto que no logro ejecutarla y al final me arroja este error:

Fatal error: Maximum execution time of 30 seconds exceeded in c:\prueba\numeros.php on line 15

Ojala alguien sepa que pasa

Salu2 !!!
__________________
AK.T.I.V.E.tm Live, Never DIE
  #5 (permalink)  
Antiguo 19/01/2004, 08:21
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues .. dale más tiempo de ejecución (usalo al principio del script):

set_time_limit(segundos);

(dale unos segundos .. 100 ? .. ahí lo ajustas tu ..)

Date cuenta que el algoritmo es algo "recursivo" .. es decir .. cuantos más números ha generado .. más le costará encontrar uno no repetido .. y si mayor es el rango de núemeros a generar y mayor es el total de números a generar .. más tiempo de proceso necesitará.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 19/01/2004, 08:38
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Hola,

La generacion de numeros aleatorios en informatica es un dolor de cabeza. Tienden repetirse mucho.

De todas formas, si mal no he entendido tu pregunta inicial, tu lo que quieres es mostrar los numeros de 1 a 5 desordenados. Para eso puedes probar este codigo:
Código PHP:
$lista=range(1,5);
shuffle($lista);
foreach(
$lista as $numero) {
  echo 
$numero.'<br>';

Tampoco dara mucha aletoriedad, pero es mas rapido.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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 21:58.