
RANDU [ 1 ] es un método obsoleto para generar números aleatorios utilizado principalmente en las décadas de 1960 y 1970. [ 2 ] Es un generador congruencial lineal (LCG) del tipo Park-Miller [ 2 ] definido por la recurrencia
con el número de semilla inicialcomo un número impar . Genera números enteros pseudoaleatorios.que se distribuyen uniformemente en el intervalo [0, 2 31 − 1] , pero en aplicaciones prácticas a menudo se transforman en racionales pseudoaleatorios.en el intervalo (0, 1) , por la fórmula
RANDU de IBM es ampliamente considerado como uno de los generadores de números aleatorios peor concebidos jamás diseñados, [ 3 ] y fue descrito como "verdaderamente horrible" por Donald Knuth . [ 4 ] Falla estrepitosamente la prueba espectral para dimensiones mayores que 2, como se muestra a continuación.
La razón para elegir estos valores particulares para el multiplicador y el módulo fue que con un tamaño de palabra entera de 32 bits, la aritmética de mod 2 31 yLos cálculos podían realizarse rápidamente utilizando operadores bit a bit en el hardware, pero los valores se eligieron por conveniencia computacional, no por su calidad estadística.
Problemas con el multiplicador y el módulo
Para cualquier generador congruencial lineal con módulo m utilizado para generar puntos en un espacio n -dimensional, los puntos caen en no más dehiperplanos paralelos. [ 5 ] Esto indica que los LCG de módulo bajo no son adecuados para la simulación de Monte Carlo de alta dimensión . Para m = 2 31 y n = 3, un LCG podría tener hasta 2344 planos, máximo teórico. En el mismo artículo de Marsaglia se demuestra un límite superior mucho más ajustado como la suma de los valores absolutos de todos los coeficientes de los hiperplanos en forma estándar. Es decir, si los hiperplanos son de la forma Ax 1 + Bx 2 + Cx 3 = algún entero como 0, 1, 2, etc., entonces el número máximo de planos es | A | + | B | + | C |. [ 5 ]
Ahora examinamos los valores del multiplicador 65539 y del módulo 2 31 elegidos para RANDU. Consideremos el siguiente cálculo donde cada término debe tomarse módulo 2 31. Comencemos escribiendo la relación recursiva como
que después de expandir el factor cuadrático se convierte en
(porque 2 32 mod 2 31 = 0 ) y nos permite mostrar la correlación entre tres puntos como
Sumando los valores absolutos de los coeficientes, obtenemos no más de 16 planos en 3D, que se convierten en solo 15 planos al examinarlos más de cerca, como se muestra en el diagrama anterior. Incluso para los estándares de los LCG, esto demuestra que RANDU es terrible: usar RANDU para muestrear un cubo unitario solo muestreará 15 planos paralelos, ni siquiera cerca del límite superior deaviones.
Como resultado del uso generalizado de RANDU a principios de la década de 1970, muchos resultados de esa época se consideran sospechosos. [ 6 ] Este comportamiento anómalo ya se había detectado en 1963 [ 7 ] en un ordenador de 36 bits y se reimplementó cuidadosamente en el IBM System/360 de 32 bits . Se creía que se había eliminado en gran medida a principios de la década de 1990 [ 8 ] , pero todavía había compiladores de FORTRAN que lo utilizaban hasta 1999. [ 1 ]
Salida de ejemplo
El inicio del período de producción de RANDU para la semilla iniciales
Referencias
- 1 2 Manual de referencia del lenguaje Compaq Fortran (Número de pedido: AA-Q66SD-TK) Septiembre de 1999 (anteriormente DIGITAL Fortran y DEC Fortran 90).
- 1 2 Entacher, Karl (junio de 2000). "Una colección de generadores de números pseudoaleatorios clásicos con estructuras lineales: versión avanzada" . Archivado del original el 18 de noviembre de 2018.
- ↑ Knuth DE El arte de la programación informática , Volumen 2: Algoritmos seminuméricos , 2.ª edición. Addison-Wesley, 1981. ISBN 0-201-03822-6Sección 3.3.4, pág. 104: "¡Su solo nombre, RANDU, basta para provocar consternación en los ojos y el estómago de muchos informáticos!" [Amplia cobertura de pruebas estadísticas para detectar la no aleatoriedad.]
- ↑ Knuth, Donald Ervin (1998). El arte de la programación informática, volumen 2: algoritmos seminuméricos (3.ª ed.). Addison-Wesley. pág. 188. ISBN 0-201-89684-2.
- 1 2 Marsaglia, George (1968). "Los números aleatorios caen principalmente en los planos" . Proc. Natl. Acad. Sci. USA . 61 (1): 25– 28. Bibcode : 1968PNAS...61...25M . doi : 10.1073/ pnas.61.1.25 . PMC 285899. PMID 16591687 .
- ↑ Press, William H.; et al. (1992). Numerical Recipes in Fortran 77: The Art of Scientific Computing (2.ª ed.). ISBN 0-521-43064-X.
- ↑ Greenberger, Martin (1 de marzo de 1965). "Método en la aleatoriedad" . Commun. ACM . 8 (3): 177– 179. doi : 10.1145/363791.363827 . ISSN 0001-0782 .
- ↑ "Donald Knuth – Entrevista en librerías especializadas en informática" . 7 de diciembre de 1993. Archivado del original el 28 de marzo de 2022.
Enlaces externos
Citas relacionadas con RANDU en Wikiquote
- Generadores de números pseudoaleatorios