
La generación de números aleatorios es un proceso mediante el cual, a menudo a través de un generador de números aleatorios ( RNG ), se genera una secuencia de números o símbolos que no puede predecirse razonablemente mejor que por azar . Esto significa que la secuencia resultante contendrá patrones detectables a posteriori, pero imposibles de prever. Los generadores de números aleatorios verdaderos pueden ser generadores de números aleatorios por hardware (HRNG), en los que cada generación es una función del valor actual de un atributo del entorno físico que cambia constantemente de una manera prácticamente imposible de modelar. Esto contrasta con las llamadas generaciones de números aleatorios realizadas por generadores de números pseudoaleatorios (PRNG), que generan números pseudoaleatorios que, de hecho, están predeterminados; estos números pueden reproducirse simplemente conociendo el estado inicial del PRNG y el método que utiliza para generar números. [ 1 ] También existe una clase de generadores de números aleatorios verdaderos no físicos (NPTRNG) que producen números aleatorios verdaderos sin acceso a una fuente de hardware dedicada, aprovechando la entropía presente en el sistema informático. [ 2 ] Consulte los detalles en Números verdaderos frente a números pseudoaleatorios .
Diversas aplicaciones de la aleatoriedad han propiciado el desarrollo de diferentes métodos para generar datos aleatorios . Algunos de estos métodos existen desde la antigüedad, incluyendo ejemplos conocidos como el lanzamiento de dados , el lanzamiento de monedas , el barajado de cartas , el uso de tallos de milenrama (para la adivinación ) en el I Ching , así como un sinfín de otras técnicas. Debido a la naturaleza mecánica de estas técnicas, generar grandes cantidades de números suficientemente aleatorios (importante en estadística) requería mucho trabajo y tiempo. Por lo tanto, en ocasiones, los resultados se recopilaban y distribuían en forma de tablas de números aleatorios .
Several computational methods for pseudorandom number generation exist. All fall short of the goal of true randomness, although they may meet, with varying success, some of the statistical tests for randomness intended to measure how unpredictable their results are (that is, to what degree their patterns are discernible). This generally makes them unusable for applications such as cryptography. However, carefully designed cryptographically secure pseudorandom number generators (CSPRNGS) also exist, with special features specifically designed for use in cryptography.
Practical applications and uses
Random number generators have applications in gambling, statistical sampling, computer simulation, cryptography, completely randomized design, and other areas where producing an unpredictable result is desirable. Generally, in applications having unpredictability as the paramount feature, such as in security applications, hardware generators are generally preferred over pseudorandom algorithms, where feasible.
Pseudorandom number generators are very useful in developing Monte Carlo-method simulations, as debugging is facilitated by the ability to run the same sequence of random numbers again by starting from the same random seed. They are also used in cryptography – so long as the seed is secret. The sender and receiver can generate the same set of numbers automatically to use as keys.
The generation of pseudorandom numbers is an important and common task in computer programming. While cryptography and certain numerical algorithms require a very high degree of apparent randomness, many other operations only need a modest amount of unpredictability. Some simple examples might be presenting a user with a "random quote of the day", or determining which way a computer-controlled adversary might move in a computer game. Weaker forms of randomness are used in hash algorithms and in creating amortizedsearching and sorting algorithms.
Some applications that appear at first sight to be suitable for randomization are in fact not quite so simple. For instance, a system that "randomly" selects music tracks for a background music system must only appear random, and may even have ways to control the selection of music: a truly random system would have no restriction on the same item appearing two or three times in succession.
True vs. pseudo-random numbers
Existen dos métodos principales para generar números aleatorios. El primero consiste en medir algún fenómeno físico que se espera que sea aleatorio y luego compensar posibles sesgos en el proceso de medición. Algunos ejemplos de fuentes incluyen la medición del ruido atmosférico , el ruido térmico y otros fenómenos electromagnéticos y cuánticos externos. Por ejemplo, la radiación cósmica de fondo o la desintegración radiactiva, medidas en escalas de tiempo cortas, representan fuentes de entropía natural (como medida de la imprevisibilidad o la sorpresa del proceso de generación de números).
La velocidad a la que se puede obtener entropía de fuentes naturales depende de los fenómenos físicos subyacentes que se estén midiendo. Por lo tanto, se dice que las fuentes de entropía verdadera que ocurren naturalmente son bloqueantes : están limitadas en velocidad hasta que se recolecta suficiente entropía para satisfacer la demanda. En algunos sistemas tipo Unix, incluidas la mayoría de las distribuciones de Linux , el archivo de pseudodispositivo /dev/random se bloqueará hasta que se recolecte suficiente entropía del entorno. [ 3 ] Debido a este comportamiento de bloqueo, las lecturas masivas de /dev/random , como llenar un disco duro con bits aleatorios, a menudo pueden ser lentas en sistemas que usan este tipo de fuente de entropía.
El segundo método utiliza algoritmos computacionales que pueden producir largas secuencias de resultados aparentemente aleatorios, que en realidad están completamente determinados por un valor inicial más corto, conocido como valor semilla o clave . Como resultado, toda la secuencia aparentemente aleatoria puede reproducirse si se conoce el valor semilla. Este tipo de generador de números aleatorios se suele denominar generador de números pseudoaleatorios . Este tipo de generador normalmente no depende de fuentes de entropía natural, aunque puede ser alimentado periódicamente por fuentes naturales. Este tipo de generador no es bloqueante, por lo que no está limitado por un evento externo, lo que permite realizar lecturas masivas.
Los diseños criptográficos estándar adoptan un enfoque híbrido, utilizando aleatoriedad obtenida de fuentes naturales para inicializar generadores de números pseudoaleatorios criptográficamente seguros (CSPRNG). Los generadores de números aleatorios de hardware generalmente producen solo una cantidad limitada de bits aleatorios por segundo. Para aumentar la tasa de datos de salida disponible, a menudo se utilizan para generar la " semilla " de un PRNG más rápido. El PRNG también ayuda con la "anonimización" de la fuente de ruido (eliminando las características que identifican la fuente de ruido) y la extracción de entropía . Con un algoritmo PRNG adecuado seleccionado ( generador de números pseudoaleatorios criptográficamente seguro , CSPRNG), la combinación puede satisfacer los requisitos de los Estándares Federales de Procesamiento de Información y los Estándares de Criterios Comunes . [ 4 ]
Métodos de generación
Métodos físicos
Los métodos más antiguos para generar números aleatorios, como los dados, el lanzamiento de monedas y la ruleta, todavía se utilizan hoy en día, principalmente en juegos y apuestas, ya que suelen ser demasiado lentos para la mayoría de las aplicaciones en estadística y criptografía.

Muchos fenómenos naturales generan señales de " ruido " de bajo nivel y estadísticamente aleatorias , incluyendo ruido térmico y de disparo , fluctuación y metaestabilidad de circuitos electrónicos, movimiento browniano y ruido atmosférico . [ 5 ] Los investigadores también utilizaron el efecto fotoeléctrico , que involucra un divisor de haz , otros fenómenos cuánticos , [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] e incluso la desintegración nuclear (debido a consideraciones prácticas, esta última, así como el ruido atmosférico, no es viable excepto para aplicaciones bastante restringidas o servicios de distribución en línea). [ 5 ] Si bien los fenómenos "clásicos" (no cuánticos) no son verdaderamente aleatorios, un sistema físico impredecible suele ser aceptable como fuente de aleatoriedad, por lo que los calificadores "verdadero" y "físico" se utilizan indistintamente. [ 11 ]
Se espera que un generador de números aleatorios de hardware produzca números aleatorios casi perfectos (" entropía completa "). [ 12 ] Un proceso físico generalmente no tiene esta propiedad, y un TRNG práctico normalmente incluye algunos bloques: [ 13 ]
- una fuente de ruido que implementa el proceso físico que produce la entropía. Por lo general, este proceso es analógico , por lo que se utiliza un digitalizador para convertir la salida de la fuente analógica en una representación binaria;
- un acondicionador ( extractor de aleatoriedad ) que mejora la calidad de los bits aleatorios;
- Pruebas de salud . Los TRNG se utilizan principalmente en algoritmos criptográficos que se rompen por completo si los números aleatorios tienen baja entropía, por lo que la funcionalidad de prueba suele estar incluida.
Métodos computacionales
Por razones de rendimiento y seguridad, la mayoría de los generadores de números aleatorios utilizan PRNG en su construcción (esta arquitectura está de hecho contemplada en estándares industriales como NIST SP 800-90A ).
Un generador de números pseudoaleatorios (PRNG), también conocido como generador de bits aleatorios determinista (DRBG), [ 14 ] es un algoritmo para generar una secuencia de números cuyas propiedades se aproximan a las de secuencias de números aleatorios. La secuencia generada por el PRNG no es verdaderamente aleatoria , ya que está completamente determinada por un valor inicial, llamado semilla del PRNG (que puede incluir valores verdaderamente aleatorios). Si bien se pueden generar secuencias más cercanas a la aleatoriedad real utilizando generadores de números aleatorios por hardware , los generadores de números pseudoaleatorios son importantes en la práctica por su velocidad de generación de números y su reproducibilidad. [ 15 ]
Los generadores de números pseudoaleatorios (PRNG) son fundamentales en aplicaciones como simulaciones (por ejemplo, para el método de Monte Carlo ), juegos electrónicos (por ejemplo, para la generación procedimental ) y criptografía . Las aplicaciones criptográficas requieren que el resultado no sea predecible a partir de resultados anteriores, y se necesitan algoritmos más elaborados que no hereden la linealidad de los PRNG más simples.
Las buenas propiedades estadísticas son un requisito fundamental para la salida de un generador de números pseudoaleatorios (GNA). En general, se requiere un análisis matemático cuidadoso para tener alguna certeza de que un GNA genera números suficientemente cercanos a la aleatoriedad para el uso previsto. John von Neumann advirtió sobre la interpretación errónea de un GNA como un generador verdaderamente aleatorio, bromeando con que «cualquiera que considere métodos aritméticos para producir dígitos aleatorios está, por supuesto, en estado de pecado». [ 16 ]
Por los humanos
La generación de números aleatorios también puede ser realizada por humanos, mediante la recopilación de diversas entradas de usuarios finales y su uso como fuente de aleatorización. Sin embargo, la mayoría de los estudios revelan que los sujetos humanos presentan cierto grado de falta de aleatoriedad al intentar producir una secuencia aleatoria de, por ejemplo, dígitos o letras. Pueden alternar demasiado entre sus elecciones en comparación con un buen generador aleatorio; [ 17 ] por lo tanto, este enfoque no se utiliza ampliamente. No obstante, precisamente por el bajo rendimiento humano en esta tarea, la generación humana de números aleatorios puede utilizarse como herramienta para comprender mejor las funciones cerebrales que de otro modo serían inaccesibles. [ 17 ]
Procesamiento posterior y comprobaciones estadísticas
Incluso con una fuente de números aleatorios plausibles (quizás un generador de hardware basado en mecánica cuántica), obtener números completamente imparciales requiere cuidado. Además, el comportamiento de estos generadores suele variar con la temperatura, la tensión de alimentación, la antigüedad del dispositivo u otras interferencias externas.
Los números aleatorios generados a veces se someten a pruebas estadísticas antes de su uso para asegurar que la fuente subyacente aún funcione, y luego se procesan posteriormente para mejorar sus propiedades estadísticas. Un ejemplo sería el generador de números aleatorios por hardware TRNG9803 [ 18 ] , que utiliza una medición de entropía como prueba de hardware y luego procesa la secuencia aleatoria con un cifrado de flujo de registro de desplazamiento. Generalmente es difícil utilizar pruebas estadísticas para validar los números aleatorios generados. Wang y Nicol [ 19 ] propusieron una técnica de prueba estadística basada en la distancia que se utiliza para identificar las debilidades de varios generadores aleatorios. Li y Wang [ 20 ] propusieron un método para probar números aleatorios basados en fuentes de entropía caótica láser utilizando propiedades de movimiento browniano.
También se utilizan pruebas estadísticas para garantizar que el resultado final, una vez procesado, de un generador de números aleatorios sea realmente imparcial, y para ello se han desarrollado numerosos conjuntos de pruebas de aleatoriedad .
Otras consideraciones
Reconfigurando la distribución
Distribuciones uniformes
La mayoría de los generadores de números aleatorios trabajan de forma nativa con enteros o bits individuales, por lo que se requiere un paso adicional para llegar a la distribución uniforme canónica entre 0 y 1. La implementación no es tan trivial como dividir el entero por su valor máximo posible. Específicamente: [ 21 ] [ 22 ]
- El número entero utilizado en la transformación debe proporcionar suficientes bits para la precisión deseada.
- La naturaleza misma de las operaciones aritméticas de punto flotante implica que existe mayor precisión cuanto más cerca esté el número de cero. Esta precisión adicional generalmente no se utiliza debido a la gran cantidad de bits necesarios. (Una consecuencia es la transformada de Box-Muller y la truncación de las colas ).
- Los errores de redondeo en la división pueden sesgar el resultado. En el peor de los casos, se puede trazar un límite supuestamente excluido contrario a lo esperado según las matemáticas de números reales.
El algoritmo principal, utilizado por OpenJDK , Rust y NumPy , se describe en una propuesta para la STL de C++ . No utiliza la precisión adicional y sufre de sesgo solo en el último bit debido al redondeo de la mitad a un número par . [ 23 ] Se justifican otras consideraciones numéricas al cambiar esta distribución uniforme canónica a un rango diferente. [ 24 ] Un método propuesto para el lenguaje de programación Swift afirma utilizar la precisión completa en todas partes. [ 25 ]
Los enteros con distribución uniforme se utilizan comúnmente en algoritmos como el algoritmo de Fisher-Yates . Sin embargo, una implementación simple puede introducir un sesgo de módulo en el resultado, por lo que se deben utilizar algoritmos más complejos. En 2018, Daniel Lemire describió un método que casi nunca realiza divisiones [ 26 ] , siendo el algoritmo óptimo de 2021, inspirado en la codificación aritmética, desarrollado por Stephen Canon de Apple Inc. [ 27 ].
La mayoría de los generadores de números aleatorios de 0 a 1 incluyen el 0 pero excluyen el 1, mientras que otros incluyen o excluyen ambos.
Otras distribuciones
Dado un conjunto de números aleatorios uniformes, existen varios métodos para generar una nueva fuente aleatoria que corresponda a una función de densidad de probabilidad . Un método, denominado método de inversión , consiste en integrar hasta un área mayor o igual al número aleatorio (que debe generarse entre 0 y 1 para obtener distribuciones adecuadas). Un segundo método, denominado método de aceptación-rechazo , consiste en elegir un valor de x e y y comprobar si la función de x es mayor que el valor de y. Si lo es, se acepta el valor de x. De lo contrario, se rechaza y el algoritmo vuelve a intentarlo. [ 28 ] [ 29 ]
Como ejemplo de muestreo por rechazo, para generar un par de números aleatorios distribuidos normalmente estándar estadísticamente independientes ( x , y ), primero se pueden generar las coordenadas polares ( r , θ ), donde r 2 ~ χ 2 2 y θ ~ UNIFORM(0,2π) (ver transformación de Box-Muller ).
Blanqueo
Las salidas de varios generadores de números aleatorios (GNR) independientes se pueden combinar (por ejemplo, mediante una operación XOR bit a bit ) para obtener un GNR combinado al menos tan bueno como el mejor GNR utilizado. Esto se conoce como blanqueamiento por software .
En ocasiones, se combinan generadores de números aleatorios computacionales y físicos para aprovechar las ventajas de ambos tipos. Los generadores computacionales suelen generar números pseudoaleatorios mucho más rápido que los físicos, mientras que estos últimos pueden generar números verdaderamente aleatorios.
Secuencias de baja discrepancia como alternativa
Algunos cálculos que utilizan un generador de números aleatorios se pueden resumir como el cálculo de un valor total o promedio, como el cálculo de integrales mediante el método de Monte Carlo . Para este tipo de problemas, es posible encontrar una solución más precisa utilizando las llamadas secuencias de baja discrepancia , también conocidas como números cuasialeatorios . Estas secuencias tienen un patrón definido que rellena los huecos de manera uniforme, cualitativamente hablando; una secuencia verdaderamente aleatoria puede dejar, y generalmente deja, huecos mayores.
Actividades y demostraciones
Los siguientes sitios web ofrecen muestras de números aleatorios:
- Las páginas de recursos de SOCR contienen diversas actividades interactivas prácticas y demostraciones de generación de números aleatorios mediante applets de Java.
- El Grupo de Óptica Cuántica de la ANU genera números aleatorios a partir del vacío cuántico. Se pueden consultar ejemplos de estos números aleatorios en su página de investigación sobre generadores de números aleatorios cuánticos.
- Random.org pone a disposición números aleatorios que se obtienen a partir de la aleatoriedad del ruido atmosférico.
- El servicio de generación de bits aleatorios cuánticos del Instituto Ruđer Bošković obtiene aleatoriedad del proceso cuántico de emisión fotónica en semiconductores. Ofrecen diversas formas de obtener los datos, incluyendo bibliotecas para varios lenguajes de programación.
- El grupo de la Universidad Tecnológica de Taiyuan genera números aleatorios a partir de un láser caótico. Se pueden obtener muestras de estos números aleatorios a través de su servicio de generación física de números aleatorios.
Puertas traseras
Dado que gran parte de la criptografía depende de un generador de números aleatorios criptográficamente seguro para la generación de claves y valores nonce criptográficos , si un generador de números aleatorios puede hacerse predecible, un atacante puede usarlo como puerta trasera para romper el cifrado.
Se informa que la NSA insertó una puerta trasera en el generador de números pseudoaleatorios Dual EC DRBG, certificado por el NIST como criptográficamente seguro . Si, por ejemplo, se crea una conexión SSL utilizando este generador de números aleatorios, según Matthew Green, esto permitiría a la NSA determinar el estado del generador y, por lo tanto, eventualmente leer todos los datos enviados a través de la conexión SSL. [ 30 ] Aunque era evidente que Dual_EC_DRBG era un generador de números pseudoaleatorios muy deficiente y posiblemente con una puerta trasera mucho antes de que se confirmara la puerta trasera de la NSA en 2013, se había utilizado significativamente en la práctica hasta ese año, por ejemplo, por la destacada empresa de seguridad RSA Security . [ 31 ] Posteriormente, surgieron acusaciones de que RSA Security insertó deliberadamente una puerta trasera de la NSA en sus productos, posiblemente como parte del programa Bullrun . RSA ha negado haber insertado deliberadamente una puerta trasera en sus productos. [ 32 ]
También se ha teorizado que los generadores de números aleatorios (GNR) de hardware podrían modificarse secretamente para tener una entropía menor a la declarada, lo que haría que el cifrado que utiliza el GNR de hardware sea susceptible a ataques. Un método publicado para ello consiste en modificar la máscara de dopante del chip, lo que sería indetectable mediante ingeniería inversa óptica. [ 33 ] Por ejemplo, para la generación de números aleatorios en Linux, se considera inaceptable utilizar el GNR de hardware RDRAND de Intel sin mezclar la salida de RDRAND con otras fuentes de entropía para contrarrestar cualquier puerta trasera en el GNR de hardware, especialmente después de la revelación del programa Bullrun de la NSA. [ 34 ] [ 35 ]
En 2010, un sorteo de lotería estadounidense fue manipulado por el director de seguridad informática de la Multi-State Lottery Association (MUSL), quien instaló subrepticiamente un malware de puerta trasera en el ordenador seguro del generador de números aleatorios de la MUSL durante un mantenimiento rutinario. [ 36 ] Durante los ataques, el hombre ganó un total de 16.500.000 dólares a lo largo de varios años.
Véase también
Referencias
- ↑ Lugrin, Thomas (2023), Mulder, Valentin; Mermoud, Alain; Lenders, Vincent; Tellenbach, Bernhard (eds.), "Generador de números aleatorios", Tendencias en tecnologías de protección de datos y cifrado , Cham: Springer Nature Switzerland, pp. 31–34 , doi : 10.1007/978-3-031-33386-6_7 , ISBN 978-3-031-33386-6
{{citation}}: CS1 mantenimiento: parámetro de trabajo con ISBN ( enlace ) - ↑ Schindler 2008 , pág. 18.
- ↑ – Manual del programador de Linux – Archivos especiales de Manned.org
- ^ Saarinen, Newell y Marshall 2020 .
- 1 2 Sunar 2009 , pág. 56.
- ↑ Herrero-Collantes & García-Escartin 2017 , p. 8.
- ^ Jacak, Marcin M.; Jóźwiak, Piotr; Niemczuk, Jakub; Jacak, Janusz E. (2021). «Generadores cuánticos de números aleatorios» . Informes científicos . 11 (1): 16108. Bibcode : 2021NatSR..1116108J . doi : 10.1038/s41598-021-95388-7 . PMC 8352985 . PMID 34373502 .
- ^ Mamá, Xiongfeng; Yuan, Xiao; Cao, Zhu; Qi, Bing; Zhang, Zhen (2016). "Generación cuántica de números aleatorios" . npj Información cuántica . 2 (1): 16021. arXiv : 1510.08957 . Código Bib : 2016npjQI...216021M . doi : 10.1038/npjqi.2016.21 .
- ↑ Kollmitzer, Christian; Petscharnig, Stefan; Suda, Martin; Mehic, Miralem (2020). «Generación cuántica de números aleatorios» . Generación cuántica de números aleatorios: teoría y práctica . Springer International Publishing . págs. 11–34 . doi : 10.1007/978-3-319-72596-3_2 . ISBN 978-3-319-72596-3.
- ^ Mannalath, Mishra y Pathak 2023 .
- ↑ Herrero-Collantes & García-Escartin 2017 , p. 4.
- ^ Turan y col. 2018 , pág. 64.
- ↑ Turan et al. 2018 , pág. 6.
- ↑ Barker, Elaine; Barker, William; Burr, William; Polk, William; Smid, Miles (julio de 2012). "Recomendación para la gestión de claves" (PDF) . Publicación especial 800-57 del NIST . NIST . doi : 10.6028/NIST.SP.800-57p1r3 . Consultado el 19 de agosto de 2013 .
- ↑ "Generadores de números pseudoaleatorios" . Khan Academy . Consultado el 11 de enero de 2016 .
- ↑ Von Neumann, John (1951). "Varias técnicas utilizadas en relación con dígitos aleatorios" (PDF) . National Bureau of Standards Applied Mathematics Series . 12 : 36–38 . Archivado del original (PDF) el 28 de noviembre de 2022.
- 1 2 W. A. Wagenaar 1972 .
- ↑ Dömstedt, B. (2009). "TRNG9803 Generador de números aleatorios verdaderos" . Fabricante: www.TRNG98.se.
- ↑ Wang, Yongge (2014). "Propiedades estadísticas de secuencias pseudoaleatorias y experimentos con PHP y Debian OpenSSL". Seguridad informática - ESORICS 2014. Notas de clase en ciencias de la computación. Vol. 8712. Heidelberg: Springer LNCS. págs. 454–471 . doi : 10.1007/978-3-319-11203-9_26 . ISBN 978-3-319-11202-2.
- ↑ Li, Pu; Yi, Xiaogang; Liu, Xianglian; Wang, Yuncai; Wang, Yongge (2016-07-11). "Propiedades del movimiento browniano de generadores de bits aleatorios optoelectrónicos basados en caos láser" . Optics Express . 24 (14): 15822– 15833. Bibcode : 2016OExpr..2415822L . doi : 10.1364/OE.24.015822 . ISSN 1094-4087 . PMID 27410852 .
- ↑ Goualard, F. (2020). "Generación de números aleatorios de punto flotante mediante la división de enteros: un estudio de caso". Ciencia Computacional – ICCS 2020. ICCS. Notas de clase en Ciencias de la Computación. Vol. 12138. pp. 15–28 . doi : 10.1007/978-3-030-50417-5_2 . ISBN 978-3-030-50416-8. PMC 7302591 . S2CID 219889587 .
- ↑ Campbell, Taylor R. (2014). "Números de punto flotante aleatorios uniformes: Cómo generar un número de punto flotante de doble precisión en [ 0, 1 ] de forma uniforme y aleatoria a partir de una fuente aleatoria uniforme de bits" . Recuperado el 4 de septiembre de 2021 .
- ↑ "Una nueva especificación para std::generate_canonical" . www.open-std.org .
- ↑ Goualard, Frédéric (julio de 2021). "Generación de números aleatorios de punto flotante a partir de un intervalo" . HAL . Consultado el 4 de septiembre de 2021 .
- ↑ NevinBR. " [ stdlib ] Mejoras en números aleatorios de punto flotante por NevinBR · Solicitud de extracción n.° 33560 · apple/swift" . GitHub .
- ↑ Lemire, Daniel (23 de febrero de 2019). "Generación rápida de enteros aleatorios en un intervalo". ACM Transactions on Modeling and Computer Simulation . 29 (1): 1– 12. arXiv : 1805.10941 . doi : 10.1145/3230636 . S2CID 44061046 .
- ↑ "Un algoritmo óptimo para enteros aleatorios acotados por stephentyrone · Solicitud de extracción n.° 39143 · apple/swift" . GitHub .
- ↑ The MathWorks. "Métodos de generación comunes" . Consultado el 8 de septiembre de 2024 .
- ↑ El Grupo de Algoritmos Numéricos. "G05 – Generadores de números aleatorios" (PDF) . Manual de la Biblioteca NAG, Mark 23. Consultado el 9 de febrero de 2012 .
- ↑ Matthew Green (18 de septiembre de 2013). "Los muchos defectos de Dual_EC_DRBG" .
- ↑ Matthew Green (2013-09-20). "RSA advierte a los desarrolladores que no utilicen los productos RSA" .
- ↑ "RSA comunica a sus clientes que no habilitamos puertas traseras en nuestros productos criptográficos" . Ars Technica . 20 de septiembre de 2013.
- ↑ "Los investigadores pueden introducir un troyano indetectable en las CPU Ivy Bridge de Intel" . Ars Technica . 18 de septiembre de 2013.
- ↑ Theodore Ts'o. "Me alegro mucho de haber resistido la presión de los ingenieros de Intel para que /dev/random dependiera únicamente de la instrucción RDRAND" . Google Plus.
- ↑ Theodore Ts'o (17 de septiembre de 2013). "Re: [ PATCH ] /dev/random: Insuficiente entropía en muchas arquitecturas" . LWN.
- ↑ Nestel, ML (7 de julio de 2015). "Dentro de la mayor estafa de lotería de la historia" . The Daily Beast . Consultado el 10 de julio de 2015 .
Fuentes
- Saarinen, Markku-Juhani O.; Newell, G. Richard; Marshall, Ben (2020-11-09). Building a Modern TRNG: An Entropy Source Interface for RISC-V (PDF) . Nueva York, NY, EE. UU.: ACM. doi : 10.1145/3411504.3421212 . Archivado del original el 16 de marzo de 2021. Consultado el 9 de septiembre de 2023 .
{{cite conference}}: CS1 maint: bot: estado de la URL original desconocido ( enlace ) - Schindler, Werner (2008). «Generadores de números aleatorios para aplicaciones criptográficas» . En Koc, CK (ed.). Ingeniería criptográfica . Boston, MA: Springer US. pp. 5–23 . doi : 10.1007/978-0-387-71817-0_2 . ISBN 978-0-387-71817-0. Consultado el 24 de agosto de 2024 .
- Turan, Meltem Sönmez; Barker, Elaine; Kelsey, John; McKay, Kerry A; Baish, Mary L; Boyle, Mike (2018). NIST SP800-90B: Recomendación para las fuentes de entropía utilizadas para la generación de bits aleatorios (Informe). Gaithersburg, MD: Instituto Nacional de Estándares y Tecnología. doi : 10.6028/nist.sp.800-90b .
- Sunar, Berk (2009). «Generadores de números aleatorios verdaderos para criptografía». Ingeniería criptográfica . Boston, MA: Springer US. pp. 55–73 . doi : 10.1007/978-0-387-71817-0_4 . ISBN 978-0-387-71816-3.
- Herrero-Collantes, Miguel; Garcia-Escartin, Juan Carlos (22 de febrero de 2017). "Generadores cuánticos de números aleatorios". Reviews of Modern Physics . 89 (1) 015004. American Physical Society (APS). arXiv : 1604.03304 . Bibcode : 2017RvMP...89a5004H . doi : 10.1103/revmodphys.89.015004 . ISSN 0034-6861 .
- Mannalath, Vaisakh; Mishra, Sandeep; Pathak, Anirban (2023). "Una revisión exhaustiva de los generadores cuánticos de números aleatorios: conceptos, clasificación y origen de la aleatoriedad" . Procesamiento de información cuántica . 22 (12): 439. arXiv : 2203.00261 . Bibcode : 2023QuIP...22..439M . doi : 10.1007/s11128-023-04175-y .
- WA Wagenaar (1972). "Generación de secuencias aleatorias por sujetos humanos: un estudio crítico de la literatura". Boletín Psicológico . 77 (1): 65– 72. CiteSeerX 10.1.1.211.9085 . doi : 10.1037/h0032060 .
Lecturas adicionales
- Donald Knuth (1997). "Capítulo 3: Números aleatorios". El arte de la programación informática . Vol. 2: Algoritmos seminuméricos (3.ª ed.).
- L'Ecuyer, Pierre (2017). "Historia de la generación de números aleatorios uniformes" (PDF) . Actas de la Conferencia de Simulación de Invierno de 2017. IEEE Press. pp. 202–230 .
- L'Ecuyer, Pierre (2012). «Generación de números aleatorios» (PDF) . En JE Gentle; W. Haerdle; Y. Mori (eds.). Manual de estadística computacional: conceptos y métodos . Manual de estadística computacional (segunda ed.). Springer-Verlag. pp. 35–71 . doi : 10.1007/978-3-642-21551-3_3 . hdl : 10419/22195 . ISBN 978-3-642-21550-6.
- Kroese, DP ; Taimre, T.; Botev, ZI (2011). «Capítulo 1 – Generación uniforme de números aleatorios» . Manual de métodos de Monte Carlo . Nueva York: John Wiley & Sons. pág. 772. ISBN 978-0-470-17793-8.
- Press, WH; Teukolsky, SA; Vetterling, WT; Flannery, BP (2007). «Capítulo 7. Números aleatorios» . Numerical Recipes: The Art of Scientific Computing (3.ª ed.). Nueva York: Cambridge University Press. ISBN 978-0-521-88068-8.
- NIST SP800-90A, B, C series sobre generación de números aleatorios. Archivado el 12/09/2017 en Wayback Machine.
- M. Tomassini; M. Sipper; M. Perrenoud (octubre de 2000). "Sobre la generación de números aleatorios de alta calidad mediante autómatas celulares bidimensionales" . IEEE Transactions on Computers . 49 (10): 1146– 1151. Bibcode : 2000ITCmp..49.1146T . doi : 10.1109/12.888056 . S2CID 10139169 .
Enlaces externos
- RANDOM.ORG Servicio de números aleatorios verdaderos
- Generador cuántico de números aleatorios en la ANU.
- Aleatorio y pseudoaleatorio en In Our Time de la BBC
- jRand es un marco de trabajo basado en Java para la generación de secuencias de simulación, incluidas secuencias pseudoaleatorias de números.
- Generadores de números aleatorios en la biblioteca Fortran de NAG
- El sistema Randomness Beacon del NIST transmite cadenas de bits de entropía completa en bloques de 512 bits cada 60 segundos. Está diseñado para proporcionar imprevisibilidad, autonomía y consistencia.
- Una llamada al sistema para números aleatorios: getrandom() , un artículo de LWN.net que describe una llamada al sistema Linux dedicada.
- Propiedades estadísticas de secuencias pseudoaleatorias y experimentos con PHP y Debian OpenSSL.
- Generador de secuencias aleatorias basado en ruido de avalancha
- Generador de números aleatorios
- generación de números aleatorios
- teoría de la información