¿Qué algoritmos se utilizan en los generadores de números aleatorios modernos y de buena calidad?
¿Qué algoritmos se utilizan en los generadores de números aleatorios modernos y de buena calidad?
Respuestas:
En R, la configuración predeterminada para la generación de números aleatorios son:
Puede verificar esto fácilmente, a saber.
> RNGkind()
[1] "Mersenne-Twister" "Inversion"
Es posible cambiar el generador predeterminado a otros PRNG, como Super-Duper, Wichmann-Hill, Marsaglia-Multicarry o incluso un PRNG suministrado por el usuario. Ver el? RNGkind para más detalles. Nunca he necesitado cambiar el PRNG predeterminado.
La biblioteca C GSL también usa el Mersenne-Twister por defecto.
El Mersenne Twister es uno que he encontrado y usado antes.
El Xorshift PNG diseñado por George Marsaglia. Su período (2 ^ 128-1) es mucho más corto que el de Mersenne-Twister, pero el algoritmo es muy simple de implementar y se presta a la paralelización. Funciona bien en arquitecturas de muchos núcleos, como chips DSP y Tesla de Nvidia.
En http://prng.di.unimi.it/ se puede encontrar una tanda de varios generadores de números aleatorios probada usando TestU01, el conjunto de pruebas moderna para los generadores de números pseudoaleatorios que reemplazó recalcitrante y dieharder. Puedes elegir y elegir.