← Centro de aprendizaje de probabilidad

Generadores de números aleatorios, explicados

Una guía de Super Mega Bowl

Cuando este sitio lanza una moneda o gira una ruleta, no hay ningún objeto físico de por medio. Un ordenador produce un número que se comporta como el azar. Pero los ordenadores están construidos para ser perfectamente predecibles, así que ¿cómo generan aleatoriedad? La respuesta es más ingeniosa, y más limitada, de lo que la mayoría cree.

El problema de la aleatoriedad informática

Un ordenador sigue instrucciones exactas y siempre hace lo mismo con la misma entrada. Ese es el sentido de un ordenador, y es también por lo que no puede inventar aleatoriedad verdadera por sí solo. Todo lo que produce es el resultado de un cálculo definido. Así que, en lugar de crear aleatoriedad real, la mayoría del software la imita de forma convincente con un generador de números pseudoaleatorios, o PRNG.

Cómo funciona un generador pseudoaleatorio

Un PRNG parte de un número llamado semilla y lo pasa por una fórmula para producir el siguiente número, que vuelve a introducir para producir el siguiente, y así sucesivamente. El flujo que sale está repartido de forma uniforme y supera las pruebas estadísticas de aleatoriedad, así que a efectos prácticos parece aleatorio. Pero está totalmente determinado por la semilla. Arranca dos PRNG con la misma semilla y producirán exactamente la misma secuencia para siempre. Por eso se llama pseudoaleatorio: parece aleatorio, pero no es verdaderamente impredecible.

Esto es lo que hace el generador integrado de un navegador, y es lo que mueve la moneda, los dados y la ruleta de aquí. Para un juego justo, los resultados son uniformes e impredecibles en la práctica, que es todo lo que necesita un aleatorizador justo.

Las semillas son una función, no solo una limitación

Que una semilla reproduzca la misma secuencia es a menudo exactamente lo que quieres. En pruebas de software, una semilla fija te permite repetir la misma ejecución y depurarla. En las simulaciones, permite que otros investigadores reproduzcan tus resultados con precisión. La aleatoriedad reproducible suena a contradicción, pero es una de las herramientas más útiles de la informática.

Generadores de números verdaderamente aleatorios

Cuando parecer aleatorio no basta, los ordenadores miran fuera de sí mismos en busca de impredecibilidad real. Un generador de números verdaderamente aleatorios se apoya en ruido físico: ruido térmico electrónico, el ritmo de la desintegración radiactiva, la estática atmosférica o pequeñas variaciones del hardware. Como se cree que esas fuentes son genuinamente impredecibles, los números que producen son verdaderamente aleatorios, no solo aleatorios en términos estadísticos. Son más lentos de recolectar, así que normalmente se usan para sembrar otros generadores en lugar de producir cada valor.

Cuando la aleatoriedad debe ser segura

La seguridad es el único lugar donde un PRNG corriente es peligroso. Si un atacante puede averiguar la semilla o la fórmula, puede predecir todos los valores futuros, lo que sería catastrófico para contraseñas, claves de cifrado o barajados en el juego en línea. Para esto, los sistemas usan un generador criptográficamente seguro, o CSPRNG, diseñado para que ni siquiera ver muchas salidas pasadas dé pista útil alguna sobre la siguiente, y sembrado con aleatoriedad física verdadera. Esta es la diferencia detrás de la pregunta habitual de si un aleatorizador es criptográficamente seguro. Un lanzador de monedas informal es uniforme y justo, pero no seguro, y no pretende serlo.

Qué tipo necesitas en realidad

Mira un PRNG en acción → Cada lanzamiento, tirada y giro de aquí viene de un generador pseudoaleatorio. Ejecuta un lote grande y comprueba que los resultados son tan uniformes como promete la teoría.

La conclusión

Los ordenadores no pueden crear aleatoriedad verdadera por sí solos, así que usan generadores pseudoaleatorios: una semilla más una fórmula que produce secuencias de apariencia aleatoria pero completamente determinadas. Eso es perfecto para juegos, justicia y simulaciones, y la semilla reproducible es un extra. La aleatoriedad verdadera viene del ruido físico, y la seguridad exige un generador criptográfico especial. Ajusta la herramienta al trabajo y la pseudoaleatoriedad cubre casi todo.