TestU01 es una biblioteca de software , implementada en el lenguaje ANSI C , que ofrece una colección de utilidades para la prueba empírica de aleatoriedad de generadores de números aleatorios (RNG). [ 1 ] [ 2 ] La biblioteca fue presentada por primera vez en 2007 por Pierre L'Ecuyer y Richard Simard de la Université de Montréal . [ 3 ]
La biblioteca implementa varios tipos de generadores de números aleatorios, incluyendo algunos propuestos en la literatura y otros presentes en software de uso común. Proporciona implementaciones generales de las pruebas estadísticas clásicas para generadores de números aleatorios, así como otras propuestas en la literatura y algunas originales. Estas pruebas se pueden aplicar a los generadores predefinidos en la biblioteca, a los generadores definidos por el usuario y a secuencias de números aleatorios almacenadas en archivos. También se encuentran disponibles conjuntos de pruebas específicas para secuencias de números aleatorios uniformes en [0,1] o secuencias de bits. Asimismo, se proporcionan herramientas básicas para graficar vectores de puntos generados por los generadores.
Historia
En la primera edición de 1969 de *El arte de la programación informática* , Donald Knuth propuso una batería inicial de pruebas de aleatoriedad para generadores de números aleatorios (RNG ) . Posteriormente, las pruebas de Knuth fueron reemplazadas por las pruebas Diehard de George Marsaglia (1996), que constan de quince pruebas diferentes. La imposibilidad de modificar los parámetros de las pruebas o añadir nuevas pruebas impulsó el desarrollo de la biblioteca TestU01.
Características
TestU01 ofrece cuatro grupos de módulos para analizar generadores de números aleatorios:
- Implementación de generadores de números aleatorios (preprogramados);
- Implementar pruebas estadísticas específicas;
- Implementación de baterías de pruebas estadísticas;
- Aplicar pruebas a familias enteras de generadores de números aleatorios.
Cuando se aplica una prueba específica a una muestra de tamaño n generada por un generador de números aleatorios (GNR), el valor p de la prueba generalmente se mantiene razonable a medida que aumenta el tamaño de la muestra hasta que alcanza n₀ , por ejemplo. A partir de ese momento, el valor p diverge exponencialmente hacia 0 o 1. El módulo 4 permite al investigador estudiar la interacción entre una prueba específica y la estructura de los conjuntos de puntos generados por una familia determinada de GNR. Esta técnica puede utilizarse para determinar el tamaño óptimo de la muestra, en función de la duración del período del generador, antes de que este comience a fallar sistemáticamente la prueba.
TESTU01 ofrece varias baterías de pruebas que incluyen "Small Crush" (que consta de 10 pruebas), "Crush" (96 pruebas) y "Big Crush" (106 pruebas). Las pruebas específicas aplicadas por cada batería se detallan en la guía del usuario. [ 4 ] En un Pentium 4 de 1,7 GHz con Red Hat Linux 9.0, para un RNG simple, Small Crush tarda aproximadamente 2 minutos. Crush tarda aproximadamente 1,7 horas. Big Crush tarda aproximadamente 4 horas. Para un RNG más complejo, todos estos tiempos aumentan en un factor de dos o más. En comparación, las pruebas Diehard tardan aproximadamente 15 segundos en ejecutarse.
Limitaciones
TestU01 solo acepta entradas de 32 bits y las interpreta como valores en el rango [0, 1]. Esto hace que sea más sensible a fallos en los bits más significativos que en los menos significativos. Es importante probar los generadores de propósito general en forma de bits invertidos para verificar su idoneidad para aplicaciones que utilizan los bits de orden inferior. [ 5 ] : 4
Los generadores que producen una salida de 64 bits requieren además pruebas separadas para sus mitades alta y baja. [ 6 ] : 51
Véase también
Referencias
- ↑ El sitio web de TestU01 .
- ↑ Descargar TestU01 .
- ↑ Pierre L'Ecuyer y Richard Simard (2007), " TestU01: Una biblioteca de software en ANSI C para pruebas empíricas de generadores de números aleatorios ", ACM Transactions on Mathematical Software , 33: 22.
- ↑ Guía del usuario de TestU01 .
- ↑ Vigna, Sebastiano (julio de 2016). "Una exploración experimental de los generadores xorshift de Marsaglia, scrambled" (PDF) . ACM Transactions on Mathematical Software . 42 (4): 30. arXiv : 1402.6246 . doi : 10.1145/2845077 . S2CID 13936073 .
- ↑ O'Neill, Melissa E. (5 de septiembre de 2014). PCG: Una familia de algoritmos simples, rápidos, eficientes en espacio y estadísticamente buenos para la generación de números aleatorios (PDF) (Informe técnico). Harvey Mudd College . HMC-CS-2014-0905.
- Bibliotecas informáticas
- generación de números aleatorios
- Software estadístico