Foros del Web » Programando para Internet » PHP »

generar numeros aleatorios sin repeticion

Estas en el tema de generar numeros aleatorios sin repeticion en el foro de PHP en Foros del Web. Hola necesito generar numeros aleatorios sin que estos se repitan, es decir numeros aleatorios entre 44444 y 99999 necesito 1000 numeros que esten entre estos ...
  #1 (permalink)  
Antiguo 23/03/2009, 15:53
Avatar de Stickmaster2004  
Fecha de Ingreso: septiembre-2004
Ubicación: Barranquilla
Mensajes: 568
Antigüedad: 20 años, 2 meses
Puntos: 0
generar numeros aleatorios sin repeticion

Hola

necesito generar numeros aleatorios sin que estos se repitan, es decir numeros aleatorios entre 44444 y 99999 necesito 1000 numeros que esten entre estos valores que no se repitan, tengo este codigo que me genera las 1000 claves pero como hago para que estas no se repitan???, les estaria muy agradecido.

<?
$codigo = "";

for ($i=1; $i<=1000; $i++){

$codigo = rand(44444,99999);
echo "Contraseña obtenida: <B>$codigo</B><br>";
}


?>
__________________
Solo el que se basa en conocimiento basico y cultiva el aprendizaje obtendra sabiduria
  #2 (permalink)  
Antiguo 23/03/2009, 16:01
 
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 73
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: generar numeros aleatorios sin repeticion

Lo que debes de hacer es generar n numeros , obviamente sera mayor a 1000, lo almacenas en un array, y cada vez que quieras ingresar un numero generado preguntas si este numero ya esta dentro del array, si es no lo agregas, caso contrario sigues generando otro numero, repites esta operacion hasta que el tamaño del array sea igual a 1000. Espero te sirva este algoritmo.
  #3 (permalink)  
Antiguo 23/03/2009, 16:04
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: generar numeros aleatorios sin repeticion

Pues podrías hacer algo así:
Código php:
Ver original
  1. $aleatorios = array();
  2. $i = 0;
  3. do {
  4.      $aleatorio = rand(4444, 9999);
  5.      if(!in_array( $aleatorios, $aleatorio ) ) {
  6.             $aleatorios[] = $aleatorio;
  7.      }
  8.      $i++;
  9. } while($i < 1000);

Saludos.
  #4 (permalink)  
Antiguo 23/03/2009, 16:51
Avatar de Stickmaster2004  
Fecha de Ingreso: septiembre-2004
Ubicación: Barranquilla
Mensajes: 568
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: generar numeros aleatorios sin repeticion

SALE EL SIGUIENTE ERROR:

Wrong datatype for second argument in C:\Servidor\WEB\votaciones\html\generador.php on line 18

QUE SERA ESTE ERROR???
__________________
Solo el que se basa en conocimiento basico y cultiva el aprendizaje obtendra sabiduria
  #5 (permalink)  
Antiguo 23/03/2009, 16:58
 
Fecha de Ingreso: febrero-2009
Ubicación: cancun!
Mensajes: 898
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: generar numeros aleatorios sin repeticion

y q hay en la linea 18?
  #6 (permalink)  
Antiguo 23/03/2009, 17:41
Avatar de Stickmaster2004  
Fecha de Ingreso: septiembre-2004
Ubicación: Barranquilla
Mensajes: 568
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: generar numeros aleatorios sin repeticion

esto es lo que se encuentra en la linea 18

if(!in_array( $aleatorios, $aleatorio ) ) {
__________________
Solo el que se basa en conocimiento basico y cultiva el aprendizaje obtendra sabiduria
  #7 (permalink)  
Antiguo 23/03/2009, 17:52
Avatar de hgp147  
Fecha de Ingreso: diciembre-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 980
Antigüedad: 17 años, 10 meses
Puntos: 36
Respuesta: generar numeros aleatorios sin repeticion

Cita:
Iniciado por GatorV Ver Mensaje
Pues podrías hacer algo así:
Código php:
Ver original
  1. $aleatorios = array();
  2. $i = 0;
  3. do {
  4.      $aleatorio = rand(4444, 9999);
  5.      if(!in_array( $aleatorios, $aleatorio ) ) {
  6.             $aleatorios[] = $aleatorio;
  7.      }
  8.      $i++;
  9. } while($i < 1000);

Saludos.
GatorV, la variable $i que se va incrementando debería ir dentro del IF
__________________
Spread Firefox | Download Day 2008
¡Únete en nuestra misión para alcanzar el Record Guinness al software más descargado en 24 horas! http://www.spreadfirefox.com/es-ES/worldrecord/

Última edición por hgp147; 23/03/2009 a las 18:00
  #8 (permalink)  
Antiguo 23/03/2009, 19:27
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: generar numeros aleatorios sin repeticion

Cierto aparte debería ir al revez:
Código php:
Ver original
  1. $aleatorios = array();
  2. $i = 0;
  3. do {
  4.      $aleatorio = rand(4444, 9999);
  5.      if(!in_array( $aleatorio, $aleatorios ) ) {
  6.             $aleatorios[] = $aleatorio;
  7.             $i++;
  8.      }
  9. } while($i < 1000);

Saludos.
  #9 (permalink)  
Antiguo 25/03/2009, 06:18
Avatar de Stickmaster2004  
Fecha de Ingreso: septiembre-2004
Ubicación: Barranquilla
Mensajes: 568
Antigüedad: 20 años, 2 meses
Puntos: 0
Sonrisa Respuesta: generar numeros aleatorios sin repeticion

Hola.

muchas gracias, eso era lo que yo estaba buscando hacer, les estoy muy agradecido por toda su colaboracion.
__________________
Solo el que se basa en conocimiento basico y cultiva el aprendizaje obtendra sabiduria
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:56.