Foros del Web » Programando para Internet » ASP Clásico »

Numero Aleatorio de 9 dígitos

Estas en el tema de Numero Aleatorio de 9 dígitos en el foro de ASP Clásico en Foros del Web. ¿Sería esta la forma más correcta de generar números aleatorios de 9 dígitos? <% Randomize Variable = int((9999999999 - 100 + 1) * rnd) Response.write(Variable) ...
  #1 (permalink)  
Antiguo 14/03/2005, 09:43
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 23 años, 6 meses
Puntos: 0
Numero Aleatorio de 9 dígitos

¿Sería esta la forma más correcta de generar números aleatorios de 9 dígitos?

<%
Randomize
Variable = int((9999999999 - 100 + 1) * rnd)
Response.write(Variable)
%>


Laika
  #2 (permalink)  
Antiguo 14/03/2005, 09:57
Avatar de pablinweb  
Fecha de Ingreso: julio-2003
Mensajes: 283
Antigüedad: 21 años, 9 meses
Puntos: 0
Si necesitas 9 dígitos deberías usar algo así
<%
Randomize
Variable = int((999999999 - 100000000 + 1) * rnd + 100000000)
Response.write(Variable)
%>
  #3 (permalink)  
Antiguo 14/03/2005, 10:16
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 23 años, 6 meses
Puntos: 0
Quiero que nunca pueda repetirse un número que ya se haya generado anteriormente
  #4 (permalink)  
Antiguo 14/03/2005, 10:50
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Mmmmm... pero cómo... o sea... ¿esos números generados anteriormente se generaron (aunque no valga la redundancia) con la ejecusión del mismo script que debe arrojar aleatorios únicos o fueron generados con anterioridad y están almacenados en algún lugar (BD, archivo de texto, variable sessión, cookie, etc)?
__________________
...___...
  #5 (permalink)  
Antiguo 14/03/2005, 11:26
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 23 años, 6 meses
Puntos: 0
Los numeros aleatorios se deben generar en un formulario y a continuación se guardan en una BD.

Nunca puede haber 2 números que se hayan generado aleatoriomante que sean iguales.

En un mes se generan 1000 números aleatorios, y cada meses se iran borrando de la BD los numeros aleatorios que tengan más de 3 meses (por temas de espacio en la BD).

Aqui veo el problema que nose cómo hacer para que nunca me vuelvan a salir numeros aletorios iguales o que alguna vez se hayan generado pero que con el paso del tiempo se ha borrado de la BD.

Laika
  #6 (permalink)  
Antiguo 14/03/2005, 11:49
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Si se borraron de la BD, estás frita/o. No vas a poder generar únicos si no sabés si ya fueron generados (porque se eliminaron definitivamente)

Ahora... tal vez tengas un buen motivo para hacer todo esto, no lo sé y me gustaría saberlo; pero para referenciar registros de manera única se utilizan los campos autonuméricos!

¿No pensaste en esa posibilidad o de plano no te sirve hacerlo así?
__________________
...___...
  #7 (permalink)  
Antiguo 14/03/2005, 11:51
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 23 años, 6 meses
Puntos: 0
Si,

Fue lo primero que pensé el usar números autonumerícos, peero, no me interesa que los números vayan siguiendo un patrón (se vayan incrementando de x en x).

Laika
  #8 (permalink)  
Antiguo 14/03/2005, 12:00
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Ah bueno... se trata de un capricho ;)
Lo siento, no tengo respuesta para eso xD
__________________
...___...
  #9 (permalink)  
Antiguo 14/03/2005, 12:18
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Bueno, en realidad si puedo responder... pero no recomiendo ninguna de las opciones... sólo la del campo autonumérico.

Una opción es que que generes un "autonumérico un tanto diferente" conformado por el año, el mes, el día, la hora, minutos y segundos.. te quedaría así AAAAMMDDHHMMSS:

autonumerico = year(now()) & month(now()) & day(now()) & hour(now()) & minute(now()) & second(now())


Otra que se me ocurre, es que uses un autonumérico estandard (incremental de 1 a N) y un campo extra con ese dato aleatorio de 9 dígitos. El ID resultante será la concatenación de ambos.

1 | 236578125 = 1236578125
2 | 896514735 = 2896514735
3 | 236578125 = 3236578125

Fijate que aunque se repita el número aleatorio, la resultante siempre será única.

Igual, reitero, no recomiendo ninguna de las dos opciones.
__________________
...___...

Última edición por AlZuwaga; 14/03/2005 a las 12:20
  #10 (permalink)  
Antiguo 14/03/2005, 13:20
 
Fecha de Ingreso: enero-2005
Mensajes: 6
Antigüedad: 20 años, 3 meses
Puntos: 0
Este lo hice yo, y vale para 10 cifras.

' GENERAMOS UN NUMERO ALEATORIO DE 10 CIFRAS
public function aleatorio
Randomize
aleatorio = clng(rnd * &H7FFFFFFF)
End function

Saludos
  #11 (permalink)  
Antiguo 14/03/2005, 14:16
Avatar de pablinweb  
Fecha de Ingreso: julio-2003
Mensajes: 283
Antigüedad: 21 años, 9 meses
Puntos: 0
Se supone que usando Randomize nunca debería repetirce porque la semilla es el reloj del sistema pero podrías hacer una validación antes de ingresarlo y si está repetido generar otro, el problema es que no los guardas...
No te queda otra que hacer una combinación con la fecha actual, podría ser algo así:
<%
Randomize
Variable = int((9999 - 1000 + 1) * rnd + 1000)
y = right(year(now()),1)
m = month(now())
if len(m) = 1 then
m = "0" & m
end if
d = day(now())
if len(d) = 1 then
d = "0" & d
end if
tmp = Variable & y & d & m
Variable = int(tmp)
Response.write(Variable)
%>
Solo podrían repetirse el mismo día y esos datos si los tienes por lo que podrías validarlo sin problemas
  #12 (permalink)  
Antiguo 15/03/2005, 02:20
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 23 años, 6 meses
Puntos: 0
Gracias

Laika
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 05:54.