¿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
| ||||
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 |
| ||||
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í?
__________________ ...___... |
| ||||
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 |
| ||||
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 |