TimeLord: cómo generar semillas de aleatoriedad deterministas en Python

Fuentes: TimeLord: how to generate deterministic random seeds in Python

TimeLord es una herramienta de Python diseñada para demostrar que una secuencia de resultados aleatorios extremadamente improbable no implica necesariamente suerte, sino que puede ser reproducida mediante la manipulación de la semilla inicial. El programa construye una semilla entera estándar que permite a la función random.Random() de Python generar secuencias específicas, como 100 cabezas consecutivas en una moneda, sin modificar el generador de números aleatorios subyacente ni realizar parches de código.

El mecanismo se basa en la naturaleza determinista del generador Mersenne Twister (MT19937) utilizado por CPython. Al invocar random.Random(), el sistema fija el estado interno del generador mediante una semilla. TimeLord resuelve el problema inverso: a partir de la secuencia deseada (por ejemplo, 100 cabezas), calcula la semilla que produce exactamente ese resultado. Esto se logra explotando que las operaciones de 'twist' y 'temper' del MT19937 son operaciones lineales sobre el campo GF(2), permitiendo resolver sistemas de ecuaciones lineales para encontrar el estado interno compatible.

La herramienta soporta la generación de semillas para secuencias de hasta 1,000 cabezas consecutivas. A diferencia de otras técnicas que modifican el estado interno directamente, TimeLord invierte el proceso de inicialización por array del MT19937 para obtener una semilla entera estándar. Esto garantiza que el código de demostración sea trivial y no contenga lógica oculta, validando así que la aleatoriedad es solo una ilusión determinista hasta que se conoce la semilla. El proyecto incluye también un generador de semillas para texto ASCII, aplicando la misma lógica para restringir los bits de salida a caracteres específicos.