Foros del Web » Programando para Internet » PHP »

Generar papeletas

Estas en el tema de Generar papeletas en el foro de PHP en Foros del Web. Hola un saludo a todos... he creado una función para crear papeletas que me parece un poco para salir del paso. Código PHP: function  crear ...
  #1 (permalink)  
Antiguo 06/09/2011, 10:45
 
Fecha de Ingreso: septiembre-2011
Mensajes: 6
Antigüedad: 12 años, 8 meses
Puntos: 0
Generar papeletas

Hola un saludo a todos...

he creado una función para crear papeletas que me parece un poco para salir del paso.

Código PHP:
function crear(){
    
    
//genero el numero aleatorio
        
$numero=rand(0,9).rand(0,9).rand(0,9).rand(0,9).rand(0,9).rand(0,9).rand(0,9).rand(0,9).rand(0,9); 
        
//compruebo si ya se ha asignado ese numero
    
$sqlnumeros="SELECT numero FROM tabla WHERE numero='".$numero."'";
    
$sqlnumeros=mysql_query($sqlnumeror,$conexion)or die(mysql_error());
    
$sqlnumeror=mysql_num_rows($sqlnumeros);
    
    if(
$sqlnumeros<=0){
        
              
//si no existe el numero en la base de datos retorno ese numero, es ok 
              
return $numero;    
        
    }else{
               
//si ya existe el numero vuelvo a llamar a esta misma función para generar otro valido
        
crear();
        
    }
    

preguntas:
es mas dificil que se genere dos veces el mismo numero si uso
$numero=rand(0,9).rand(0,9).rand(0,9).rand(0,9).ra nd(0,9).rand(0,9).rand(0,9).rand(0,9).rand(0,9);
o si usara rand(0,99999999) y formateara el numero con los 0 necesarios a la izquierda.


supongo que cuantas mas papeletas existan mas bucle se generara coincidiendo el numero de las papeletas... alguna idea de como hacer mas eficiente esta pequeña función?


espero vuestras sugerencias. un saludo a todos.
  #2 (permalink)  
Antiguo 06/09/2011, 10:58
Avatar de DrFaust  
Fecha de Ingreso: septiembre-2011
Ubicación: Buenos Aires
Mensajes: 308
Antigüedad: 12 años, 8 meses
Puntos: 87
Respuesta: Generar papeletas

No hay ninguna diferencia apreciable entre el nivel de aleatoriedad de ambas opciones, pero la segunda es más eficiente.

Respecto a cómo hacerla todavía más eficiente, todo depende de lo que quieras hacer con esos números. Si los estás asignando como IDs, evidentemente más eficiente sería usar IDs autoincrementales.

Y si es imprescindible que las IDs tengan un componente aleatorio, podés combinar ambas cosas: una ID aleatoria que esté entre ciertos rangos autoincrementales. Por ejemplo, que la ID del primer elemento esté entre 1 y 1000, la ID del segundo esté entre 1001 y 2000, etcétera. Así te ahorrarías el paso de chequear si la ID aleatoria ya existe.

Otra posibilidad es tomar la última ID que utilizaste y sumarle un número aleatorio.

Y una más: concatenar un número aleatorio con una ID autoincremental; algo como 0483030001, 1951670002, etcétera.

Última edición por DrFaust; 06/09/2011 a las 11:09

Etiquetas: sql, tabla
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 01:00.