Un autómata celular para generar números pseudo-aleatorios

La idea no es la primera vez que se oye, creo que fue_Wolfram_quién_lo_propuso en_su_momento, pero el concepto no deja de ser curioso, y el otro día trasteando con Golly me encontre con que una pequeña variante del juego_de_la vida_de_Conway, con la diferencia de que una "célula" también puede "nacer" si tiene 4 vecinos (y no solo 3) llamado "3-4 life", que hace que patrones sencillos crezcan indefinidamente quedando el contenido en su interior algo aleatorio, esta es una simulación de las 250 primeras generaciones [http:// videobin.org/+2be/2ly.html].

Lo que intenta hacer el código es expandir la figura inicial estas 250 generaciones e introducir una "semilla de aleatoriedad", que puede ser un string cualquiera o se puede leer de un archivo, lo que hará que la figura crezca de forma distinta cada vez. Se deja además 1000 generaciones para que esta semilla se mezcle bien, y el resultado se utiliza para generar números pseudo-aleatorios, que no creo que sean criptográficamente.

Una peculiaridad es que el campo es de 40x40 (pero esto se puede cambiar) y toroidal, es decir, cuando la primera fila comprueba lo que tendría encima, se leen las de la última, y vieceversa, lo mismo pasa con  derecha e izquierda.

El código está aquí [autorand.tar.gz], solo hay que compilar autorand.c directamente.

Por defecto la "semilla de aleatoriedad" se lee desde el teclado, esto se puede cambiar al lanzar el comando:

===============================================================================

./autorand [-fs ] [-s ] [-ss ] [-sz ] [-bs] [-st ] [-mo ] [-h] -fs: Tamaño del campo (anchura/altura) -s: Semilla de aleatoriedad -ss: Fuente de la semilla -sz: Tamaño de la semilla -bs: La semilla se lee como un archivo binario no se detiene al encontrar saltos de línea -st: Tipo de la semilla del campo (0 o 1) -mo: Tamaño de la semilla

===============================================================================

Eso es todo por hoy, mañana más... y dificilmente peor =D

untagged

SniperlCat 0.3, suma y sigue » « Probando scratch