Blog
matemáticas2026-07-105 min

Generador de Números Aleatorios

Domine el generador de números aleatorios: PRNG Mersenne Twister, ruido atmosférico, semillas, y aplicaciones en simulación y seguridad.


Generador de Números Aleatorios

Mi socio Andrés organiza una rifa cada diciembre. El año pasado usó Excel y dos compañeros empataron con el mismo boleto. «Esto está amañado». Andrés no sabía que Excel usa un generador pseudoaleatorio con semilla predecible. «Andrés —le dije—, la aleatoriedad no es tan simple como apretar un botón. Esto es más traidor que un perro manso». La generación de números aleatorios es fundamental en la ciencia moderna: simulaciones computacionales, criptografía, juegos de azar, todo depende de ella. Pero ojo, no toda aleatoriedad es igual. Hay algoritmos deterministas (PRNG) y fuentes físicas de entropía, y la diferencia entre ambos puede cambiar el resultado de una rifa, un experimento o una clave cifrada. La historia comenzó con John von Neumann, que en 1946 propuso el método del cuadrado medio. Desde entonces, esto no ha parado de evolucionar, pero el principio sigue siendo el mismo: generar orden donde todo parece caos.


playing cards on brown wooden table

Photo by Aidan Howe on Unsplash

Generadores Pseudoaleatorios (PRNG)

Los PRNG son algoritmos deterministas. Producen secuencias que parecen aleatorias, pero no lo son. Usan una semilla inicial y una función de recurrencia:

X_{n+1} = (a × X_n + c) mod m

Este es el generador lineal congruencial (LCG). Simple. Antiguo. Y con trampa. La elección de a, c y m determina la calidad del generador y su período. Pero los LCG tienen limitaciones conocidas: correlaciones entre números consecutivos, períodos cortos... vamos, que no te juegues la vida con ellos. Como dice el refrán, «no es oro todo lo que reluce», y los LCG relucen poco cuando los pones a prueba.

Mersenne Twister

El Mersenne Twister (MT19937). Makoto Matsumoto y Takuji Nishimura lo desarrollaron en 1997. Hoy es el PRNG más usado del mundo. Su nombre viene del número primo de Mersenne 2^19937 - 1, que es su período. ¿Cuánto es eso? Aproximadamente 10^6001. Un número con 6.001 ceros. El algoritmo genera enteros de 32 bits con distribución uniforme en 623 dimensiones y una velocidad brutal.

¿Cómo funciona? Mantiene un estado interno de 624 palabras de 32 bits. Dos etapas: «twist» actualiza el estado cada 624 números, y «temper» mejora la distribución. Suena perfecto, ¿verdad? Pues no. El MT19937 no debe usarse para criptografía. ¿La razón? Su estado se puede reconstruir observando 624 números consecutivos. Como quien dice: «dame 624 números y adivino tu secuencia».

Ruido Atmosférico como Fuente de Entropía

Los generadores de números verdaderamente aleatorios (TRNG) usan fenómenos físicos impredecibles. El ruido atmosférico, por ejemplo. Se captura con radios sintonizados entre estaciones. Las descargas de rayos, la radiación cósmica, las fluctuaciones atmosféricas: todo genera señales eléctricas que nadie puede predecir. Servicios como random.org usan ese ruido. Ni algoritmo, ni semilla: pura naturaleza.

La tasa de entropía se mide en bits por muestra. El proceso: digitalizar la señal, aplicar funciones hash criptográficas para eliminar sesgos, y verificar la calidad con pruebas estadísticas como el conjunto NIST SP 800-22. Dicho de otro modo: limpian el ruido hasta que solo queda azar puro. «Del caos nace la claridad», que decía alguien.

Semillas y Reproducibilidad

La semilla inicial de un PRNG lo determina todo. Toda la secuencia depende de ella. ¿Por qué importa? Por la reproducibilidad, crucial en simulaciones científicas y pruebas de software. Una buena semilla debe tener al menos 128 bits de entropía. Las malas prácticas: usar la hora del sistema (predecible), semillas constantes en producción, secuencias de baja entropía. Vamos, lo que no hay que hacer.

Estado_n = PRNG(Semilla, n)

Misma semilla, misma secuencia. Siempre. Para aplicaciones que no quieren reproducibilidad —como la criptografía— se usan semillas derivadas de fuentes de entropía del sistema operativo: /dev/urandom en Linux, CryptGenRandom en Windows. «Cada cosa en su lugar», y cada semilla en su contexto.

Pruebas Estadísticas de Aleatoriedad

¿Cómo saber si un generador es realmente aleatorio? Con pruebas. Muchas pruebas. El conjunto NIST SP 800-22 incluye 15: frecuencia, frecuencia dentro de bloque, runs, runs más largos dentro de bloque, rango de matriz binaria, transformada discreta de Fourier, superposición de plantillas no periódicas, superposición de plantillas periódicas, Maurer, compresión lineal, secuencia serial, entropía aproximada, suma acumulativa, excursiones aleatorias, y variante de excursiones aleatorias. Quince formas distintas de pillar al azar mintiendo.

El test de Diehard, de George Marsaglia, añade otras 18 pruebas. ¿Pasar todas estas pruebas significa que un generador es seguro para criptografía? No. Rotundamente no. Pero da confianza en su calidad estadística para simulaciones y aplicaciones no criptográficas. Como quien revisa un coche antes de un viaje: no garantiza que no se averíe, pero reduces riesgos. «Más vale prevenir que curar», que dice el sabio.

Aplicaciones

Los números aleatorios están en todas partes. Simulación Monte Carlo en finanzas y física. Muestreo estadístico. Generación de claves criptográficas. Algoritmos aleatorizados como el Quicksort aleatorizado. Juegos de azar online. Loterías. Arte generativo. Pruebas A/B. ¿La clave? Cada aplicación exige un nivel distinto de calidad. Las simulaciones necesitan buena distribución. La criptografía exige impredecibilidad total. Ni más ni menos. «Depende del color del cristal con que se mire», y también del uso que le vayas a dar.

Conclusión

El generador de números aleatorios combina la elegancia matemática del Mersenne Twister con la impredecibilidad física del ruido atmosférico. Dos mundos, un mismo objetivo. Entender la diferencia entre PRNG y TRNG, la importancia de las semillas, y las pruebas estadísticas de calidad te permite elegir el generador correcto para cada situación. ¿Simulación científica? PRNG. ¿Seguridad digital? TRNG. «No es lo mismo llamar al diablo que verlo venir», y aquí la diferencia puede costarte caro —o salvarte el cifrado.