Random se me repite cada cierto tiempo, como evita
Publicado por (A)mén! (2 intervenciones) el 30/11/2004 18:21:15
Vereis, estoy haciendo un programita que trabaja con claves para encriptar cosas, el problema me viene cuando quiero generar claves en código ASCII usando la instrucción randomize.
Para crear por ejemplo un archivo llamado "clave.txt" con un contenido de 1000 carácteres aleatorios, yo haría esto:
-----------------------------
Open "key.txt" For Output As #1
For i = 1 To 1000
Randomize
Print #1, Chr(32 + CInt(Rnd * 223));
Next
Close #1
----------------------
Ahora bien, tras hacerlo, en el archivo, si lo abrimos con el bloc de notas veremos a simple vista muchos carácteres raros y aleatorios, a simple vista ha salido bien. Pero no contento con esto, decido seleccionar un trozo con el ratón de los primeros carácteres de la lista (unos 20) y buscar esa cadena en el resto del archivo. Con lo que me doy cuenta, que todo habia salido bien a simple vista, porque a la practica me doy cuenta que los 1000 caracteres son una repetición continúa de 128 carácteres aleatorios, es decir 1000/128 veces esa cadena aleatoria de carácteres. Probádlo vosotros.
Según he leido, cuando invocas a randomize, este toma como valor el segundo del reloj para iniciar una secuencia "aleatoria" y supongo que esto sucede tan rapido, que solo será capaz de realizar una secuencia de 128 carácteres y repetirla continuamente. Supongo que alguna solución debe haber pasando algun argumento a randomize... ¡péeeeeero! no la conozco... ¿me ayudais?
PD: Como veis no soy el típico que viene aquí a que le "programen sus programas", simplemente he buscado y buscado y no encuentro... :-)
Para crear por ejemplo un archivo llamado "clave.txt" con un contenido de 1000 carácteres aleatorios, yo haría esto:
-----------------------------
Open "key.txt" For Output As #1
For i = 1 To 1000
Randomize
Print #1, Chr(32 + CInt(Rnd * 223));
Next
Close #1
----------------------
Ahora bien, tras hacerlo, en el archivo, si lo abrimos con el bloc de notas veremos a simple vista muchos carácteres raros y aleatorios, a simple vista ha salido bien. Pero no contento con esto, decido seleccionar un trozo con el ratón de los primeros carácteres de la lista (unos 20) y buscar esa cadena en el resto del archivo. Con lo que me doy cuenta, que todo habia salido bien a simple vista, porque a la practica me doy cuenta que los 1000 caracteres son una repetición continúa de 128 carácteres aleatorios, es decir 1000/128 veces esa cadena aleatoria de carácteres. Probádlo vosotros.
Según he leido, cuando invocas a randomize, este toma como valor el segundo del reloj para iniciar una secuencia "aleatoria" y supongo que esto sucede tan rapido, que solo será capaz de realizar una secuencia de 128 carácteres y repetirla continuamente. Supongo que alguna solución debe haber pasando algun argumento a randomize... ¡péeeeeero! no la conozco... ¿me ayudais?
PD: Como veis no soy el típico que viene aquí a que le "programen sus programas", simplemente he buscado y buscado y no encuentro... :-)
Valora esta pregunta


0