Una secuencia pseudoaleatoria de números es aquella que parece ser estadísticamente aleatoria , a pesar de haber sido producida mediante un proceso completamente determinista y repetible. [1] En pocas palabras, el problema es que muchas de las fuentes de aleatoriedad disponibles para los humanos (como tirar los dados) dependen de procesos físicos que no están fácilmente disponibles para los programas de computadora.
La generación de números aleatorios tiene muchos usos, como por ejemplo para muestreo aleatorio , métodos de Monte Carlo , juegos de mesa o apuestas . En física , sin embargo, la mayoría de los procesos, como la aceleración gravitacional, son deterministas, lo que significa que siempre producen el mismo resultado desde el mismo punto de partida. Algunas excepciones notables son la desintegración radiactiva y la medición cuántica , ambas modeladas como procesos verdaderamente aleatorios en la física subyacente. Dado que estos procesos no son fuentes prácticas de números aleatorios, se utilizan números pseudoaleatorios, que idealmente tienen la imprevisibilidad de una secuencia verdaderamente aleatoria, a pesar de haber sido generados por un proceso determinista. [2]
En muchas aplicaciones, el proceso determinista es un algoritmo informático llamado generador de números pseudoaleatorios , al que primero se le debe proporcionar un número llamado semilla aleatoria . Dado que la misma semilla producirá la misma secuencia cada vez, es importante que la semilla se elija bien y se mantenga oculta, especialmente en aplicaciones de seguridad , donde la imprevisibilidad del patrón es una característica crítica. [3]
En algunos casos en los que es importante que la secuencia sea demostrablemente impredecible, se han utilizado fuentes físicas de números aleatorios, como la desintegración radiactiva, el ruido electromagnético atmosférico captado de una radio sintonizada entre estaciones o tiempos entremezclados de pulsaciones de teclas . [1] [4] La inversión de tiempo necesaria para obtener estos números lleva a un compromiso: utilizar algunas de estas lecturas físicas como semilla para un generador de números pseudoaleatorios.
Antes de la informática moderna, los investigadores que necesitaban números aleatorios los generaban a través de diversos medios ( dados , cartas , ruedas de ruleta , [5] , etc.) o utilizaban tablas de números aleatorios existentes.
El primer intento de proporcionar a los investigadores un suministro de dígitos aleatorios fue en 1927, cuando Cambridge University Press publicó una tabla de 41.600 dígitos desarrollada por el LHC Tippett . En 1947, la Corporación RAND generó números mediante la simulación electrónica de una ruleta; [5] Los resultados finalmente se publicaron en 1955 como Un millón de dígitos aleatorios con 100.000 desviaciones normales .
En informática teórica , una distribución es pseudoaleatoria contra una clase de adversarios si ningún adversario de la clase puede distinguirla de la distribución uniforme con una ventaja significativa. [6] Esta noción de pseudoaleatoriedad se estudia en la teoría de la complejidad computacional y tiene aplicaciones en la criptografía .
Formalmente, sean S y T conjuntos finitos y sea F = { f : S → T } una clase de funciones. Una distribución D sobre S es ε- pseudoaleatoria frente a F si para cada f en F , la distancia estadística entre las distribuciones y , donde se muestrea de D y de la distribución uniforme en S , es como máximo ε.
En aplicaciones típicas, la clase F describe un modelo de computación con recursos acotados y uno está interesado en diseñar distribuciones D con ciertas propiedades que son pseudoaleatorias frente a F. La distribución D a menudo se especifica como la salida de un generador pseudoaleatorio . [7]
Pseudoaleatoriedad, la teoría de generar eficientemente objetos que "parecen aleatorios" a pesar de haber sido construidos con poca o ninguna aleatoriedad.
{{citation}}
: Mantenimiento CS1: nombres numéricos: lista de autores ( enlace ) Mejores prácticas comunes. Obsoleto RFC 1750.