Logo Studenta

¿Cómo una computadora genera un número aleatoriamente? Si existe un proceso programado para escoger un número, ¿es realmente aleatorio o lo es...

...hasta cierto punto? ¿Lo es o no lo es?

💡 1 Respuesta

User badge image

Aprendiendo a Aprender

De acuerdo con lo que dijo John von Neumann en 1951:

Cualquiera que considere métodos aritméticos para producir números aleatorios, está sumamente equivocado.

Un programa de computo determinístico no puede general verdaderos números aleatorios. Los programas pueden general secuencias de números pseudo-aleatorios que sin embargo tienen toda la apariencia de ser verdaderos números aleatorios, exceptuando el hecho de que son números totalmente determinados.

Dicho generador de pseudo-números aleatorios (GPNA) funciona a partir de algún estado privado, a menudo llamado semilla y que define típicamente dos operaciones:

  • Una función de salida de un número dada la semilla actual.
  • Una segunda función para general una nueva semilla a partir de la actual.

Ambas etapas son determinísticas. Si comienzo con la misma semilla, obtengo la misma secuencia de salidas.

Para obtener verdaderos números aleatorios necesitas una fuente de Entropía. Esto usualmente comporta la medida de algún proceso físico del mundo real, por ejemplo la decadencia radioactiva, la incontrolada oscilación de los anillos, el movimiento caótico de la luz de la lava, la medida de los tiempos de los tecleos o de los movimientos del ratón de computadora, etc.

Estas fuentes de entropía pueden ser condicionadas o mezcladas en el estado de semilla de un GPNA, para crear un verdadero generador de números aleatorios (GNA). Y necesitas hacerlo con cuidado para obtener buenos resultados.

El Instituto Nacional de los Estándares y de la Tecnología (ENET) tiene una familia de publicaciones especiales que dan sus recomendaciones sobre como lograr esto. Estas fuentes son en inglés:

  • SP 800-90A cubre cómo construir un generador determinístico de bits aleatorios (GDBA), el cual es un tipo de GPNA.
  • SP 800–90B recomienda fuentes de entropía potencial.
  • SP 800-90C describe cómo conectar los dos para crear un GNA que cumple con el estándar FIPS 140–2.

(Nota: estoy publicando esto desde mi teléfono, por lo tanto puede que no sean los mejores vínculos. Pero pueden darte una idea general).

Muchos CPU vienen con generadores de números aleatorios hardware, incluyendo los que cumplen con el estándar FIPS 140–2. Adaptos para crear claves de sonido criptográfico.

Fuera de los contextos criptográficos o quizás corriendo una lotería o un juego de apuestas online no necesitas generalmente que cada número aleatorio venga de un GNA. En estos casos es suficiente considerar semillas de un generador de pseudo-números aleatorios tomadas de un generador de verdaderos números aleatorios. Si toma el justo período puedes obtener secuencias de alta calidad.

Sólo he raspado la superficie. Knuth dedica las primeras 193 páginas de su libro Arte de la Programación (TAOCP), volume II (y acerca de 66 páginas en las Respuestas a los Ejercicios) a ese tema exclusivo, por lo que puedes imaginarte cuánto haya que estudiar sobre esto.

0
Dislike0

✏️ Responder

FlechasNegritoItálicoSubrayadaTachadoCitaCódigoLista numeradaLista con viñetasSuscritoSobreDisminuir la sangríaAumentar la sangríaColor de fuenteColor de fondoAlineaciónLimpiarInsertar el linkImagenFórmula

Para escribir su respuesta aquí, Ingresar o Crear una cuenta

User badge image

Otros materiales