Generación de números aleatorios: ¿cuáles son sus funciones y campos de uso?

Para detener.

Toma una moneda y tírala.

Cara o cruz, no importa. Lo que importa es que no se puede predecir el resultado. A lo sumo, puedes intentar adivinarlo. Y en este caso, eso sería bastante fácil porque solo tienes dos opciones. Pero, ¿y si tuvieras que adivinar una larga secuencia de números y/o símbolos? Sería casi imposible de corregir, ¿verdad?

Los generadores de números aleatorios (RNG, por sus siglas en inglés) son dispositivos de hardware o algoritmos de software que generan una secuencia diferente de números (y/o símbolos) cada vez que se activan, muy parecido a lanzar una moneda al aire pero en el mundo digital.

slobo / iStock

Dado que esta moneda digital ficticia puede tener todas las "caras" necesarias para mantener un alto nivel de aleatoriedad, los RNG modernos generalmente se usan en criptografía, simulaciones por computadora, apuestas en línea, videojuegos y muchas otras aplicaciones.

Así es como.

Los seres humanos han hecho uso de la aleatoriedad desde la antigüedad. Los dados, que datan de alrededor del 2400 a. C., se han encontrado en sitios arqueológicos en Egipto y los dados en forma de pirámide (de cuatro lados) datan del tercer milenio Sumer.

Ha pasado mucho tiempo desde entonces. En el mundo moderno, lanzar dados y monedas se ha vuelto insuficiente para ciertas aplicaciones.

En 1947, RAND Corporation creó un dispositivo electrónico que generaba números usando un generador de pulso aleatorio. Luego publicaron los resultados en un libro que se suponía sería útil para los científicos e investigadores que necesitaban un muestreo aleatorio.

La empresa británica de ingeniería eléctrica ferranti srl agregó un generador de números aleatorios al Ferranti Mark 1, el primero en el mundo computadora digital disponible comercialmente para uso general, que estuvo disponible en febrero de 1951 (un mes antes de UNIVAC I). El RNG incorporado utilizó ruido eléctrico para producir hasta 20 dígitos aleatorios a la vez.

En un artículo de 1946, el matemático e informático húngaro-estadounidense John Von Neumann reveló su método del cuadrado medio para obtener números aleatorios basados ​​en un valor inicial aleatorio. Al elevar al cuadrado este valor inicial inicial y cortar sus dígitos medios varias veces, los científicos podrían llegar a una secuencia de números pseudoaleatorios. Este es el primer RNG algorítmico. Sin embargo, el enfoque de Von Neumann no era un verdadero generador de números aleatorios, ya que la secuencia eventualmente caería en un breve ciclo repetitivo de números, independientemente del valor inicial utilizado.

En 1957, Tommy Flowers y Harry Fensom, antiguos descifradores de códigos de Bletchley Park, inventaron ERNIE (Equipo indicador electrónico de números aleatorios) para usarlo en la lotería Premium Bond en el Reino Unido. ERNIE produjo 50 dígitos aleatorios por segundo, que se utilizaron para determinar los números ganadores de la lotería británica de bonos de ahorro. Aunque ha sufrido muchas actualizaciones desde entonces, ERNIE todavía se usa hoy para los mismos propósitos.

Para evitar ciclos como los del sistema de Von Neumann, el matemático DH desarrolló un generador lineal congruente (LCG) en 1949, que utilizó un período muy, muy largo para el ciclo y el tiempo como valor inicial. Llamar El Central Randomizer se usó en JavaScript 1.0.

Posteriormente, se desarrolló una gran variedad de verdaderos RNG, incluido uno basado en los movimientos de una lámpara de lava.

Índice de contenidos

    ¿Cómo funciona un generador de números aleatorios?

    Como se mencionó anteriormente, tanto los dispositivos de hardware como los algoritmos de software se utilizan hoy en día para producir números aleatorios. Para comprender cómo funcionan los RNG, debemos explorar estos dos métodos diferentes para generar números aleatorios.

    Los generadores de números aleatorios de hardware (HRNG) también se denominan generadores de números aleatorios verdaderos (TRNG). Esto se debe a que se basan en cambios físicos con propiedades aleatorias para crear una determinada cantidad de bits aleatorios por segundo.

    Generador de números aleatorios de hardware NeuG
    Generador de números aleatorios por hardware. Fuente: Gareth Halfacree / Wikimedia Commons

    Por ejemplo, los HRNG pueden medir el ruido atmosférico a través de un receptor de radio, el ruido térmico de una resistencia, el ruido de avalancha o el ruido de ruptura de Zener de diodos, etc. O pueden detectar la aleatoriedad física de la mecánica cuántica en un proceso de desintegración radiactiva usando un contador Geiger, cambios en la energía del vacío a través de sensores homodinos, ruido de Poisson en circuitos electrónicos, fotones en espejos semitransparentes y señales amplificadas por transistores polarizadores. túneles a través de brechas de energía) y otras fuentes.

    Todos estos eventos naturales se consideran caóticos. Los HRNGS están diseñados para medir y usar esa entropía para generar números aleatorios.

    Por el contrario, los RNG basados ​​en software recurren a algoritmos para realizar el proceso de aleatorización. Un algoritmo es un conjunto limitado de instrucciones. Un algoritmo en RNG implica una serie de operaciones matemáticas que deben realizarse sobre un valor inicial o inicial aleatorio. Dado que esto puede afectar las secuencias de bits aleatorias finales, como ocurre con el algoritmo de Von Neumann, se cree que los RNG basados ​​en software no son realmente aleatorios sino que solo emulan la aleatoriedad. Por ello, se denominan generadores de números pseudoaleatorios (PRNG).

    De hecho, John Von Neumann escribió que "cualquiera que considere métodos aritméticos para producir números aleatorios está, por supuesto, en un estado de pecado". Los generadores de números pseudoaleatorios son deterministas. Dado que tienen un número finito de estados (definidos por el algoritmo y el número semilla), pueden terminar repitiendo una secuencia de bits y/o el posible resultado del proceso de aleatorización puede volverse predecible con el tiempo.

    Sin embargo, los PRNG son mucho más rápidos que los HRNG y el nivel de aleatoriedad que pueden proporcionar sigue siendo útil para ciertas aplicaciones.

    La criptografía es la práctica y el estudio de técnicas para cifrar y codificar datos y comunicaciones para mantenerlos privados.

    Dado que es un campo que tiene como objetivo hacer que la información sea inaccesible para usuarios no autorizados, el cifrado a menudo se basa en la generación de números aleatorios, por ejemplo, para producir las claves utilizadas para cifrar los datos, los nonces (números arbitrarios que no se pueden reutilizar) para valores de autenticación inicial o protocolos para comunicaciones protegidas por encriptación, one-time pad, etc.

    Como puede imaginar, esta aplicación requiere una generación de números aleatorios altamente segura e impredecible. Los generadores de números pseudoaleatorios comunes no son lo suficientemente seguros y los generadores de números de hardware no son lo suficientemente rápidos o están limitados por la cantidad de entropía disponible para su uso. Por lo tanto, generalmente no son adecuados para el cifrado.

    Debido a estos inconvenientes, los criptógrafos utilizan un enfoque híbrido que funciona combinando la entropía natural y los algoritmos informáticos. Este tipo de generación de números aleatorios se denomina generación de números pseudoaleatorios criptográficamente seguros (CSPRNG).

    Los CSPRNG extraen bits aleatorios de eventos físicos que ocurren en una máquina (como un generador de ruido térmico en un chip) y los codifican con una función hash adecuada para el cifrado. Luego, los CPRNG actúan como PRNG normales y aplican un algoritmo a esa semilla inicial caótica para generar números aleatorios adicionales (e incluso más impredecibles).

    Linux CPRNG, por ejemplo, se puede encontrar en acción en protocolos de shell seguros, servidores web y servidores VPN.

    La aleatoriedad anima muchos juegos. Piensa en juegos de mesa o juegos de casino que usan dados o cartas. La versión digital de estos juegos simula tirar los dados o barajar las cartas a través de PRNG.

    En los videojuegos, los PRNG se utilizan para mantener un alto nivel de imprevisibilidad y agregar rejugabilidad al juego, ahorrando tiempo y esfuerzo a los desarrolladores, ya que es mucho más fácil para ellos aleatorizar el botín en lugar de programar lo que cada enemigo individual del juego soltará cuando sea necesario. asesinado, por ejemplo.

    RNG en los videojuegos también se puede aplicar para determinar qué elemento obtendrá el jugador de un cofre, qué eventos aleatorios encontrará en un juego de mundo abierto (incluidos los cambios climáticos) y cuándo y si el jugador da un golpe crítico durante una batalla. y otros usos.

    Te puede interesar!

    Subir