El generador lineal de periodo largo equidistribuido bien (WELL) es una familia de generadores de números pseudoaleatorios desarrollada en 2006 por François Panneton , Pierre L'Ecuyer y Makoto Matsumoto.(松本眞) . [ 1 ] Es una forma de registro de desplazamiento de retroalimentación lineal optimizado para la implementación de software en una máquina de 32 bits.
Diseño operativo
La estructura es similar al Mersenne Twister , un estado grande compuesto por palabras de salida anteriores (32 bits cada una), a partir del cual se genera una nueva palabra de salida utilizando recurrencias lineales módulo 2 sobre un campo binario finito.Sin embargo, una recurrencia más compleja produce un polinomio generador más denso, lo que genera mejores propiedades estadísticas.
En cada paso del generador se leen cinco palabras de estado: los 32 bits más antiguos (que pueden abarcar un límite de palabra si el tamaño del estado no es un múltiplo de 32), los 32 bits más recientes y otras tres palabras intermedias.
Luego una serie de ocho transformaciones de una sola palabra (en su mayoría de la formay seis operaciones de "o exclusivo" las combinan en dos palabras, que se convierten en las dos palabras más recientes del estado, una de las cuales será la salida.
Variantes
Se proporcionan parámetros específicos para los siguientes generadores:
- POZO512a
- WELL521a, WELL521b
- POZO607a, POZO607b
- WELL800a, WELL800b
- POZO1024a, POZO1024b
- BIEN19937a, BIEN19937b, BIEN19937c
- POZO21701a
- POZO23209a, POZO23209b
- POZO44497a, POZO44497b.
Los números indican el tamaño del estado en bits; los sufijos de letras denotan variantes del mismo tamaño.
Implementaciones
- Implementaciones de WELL512a, WELL1024a, WELL19937a, WELL19937c, WELL44497a, WELL44497b en C (Gratis para uso no comercial)
- Implementaciones de los mismos algoritmos en Scala
- Implementaciones en C++
- Implementaciones de WELL512, WELL1024 y WELL607 en Java
- Implementaciones de WELL512 y WELL1024 en BBC BASIC
- Implementaciones modificadas de WELL19937 y WELL44497 con distribución "máximamente equidistribuida" en C (de uso gratuito para fines no comerciales).
- Implementación de WELL512 en C (Dominio público)
Referencias
- ↑ Panneton, François O.; l'Ecuyer, Pierre; Matsumoto, Makoto (marzo de 2006). "Generadores de período largo mejorados basados en recurrencias lineales módulo 2" (PDF) . ACM Transactions on Mathematical Software . 32 (1): 1– 16. CiteSeerX 10.1.1.73.5499 . doi : 10.1145/1132973.1132974 . S2CID 7368302 .
Enlaces externos
- El artículo académico y artículos relacionados de François Panneton
- Publicaciones de Pierre L'Ecuyer
- Generadores de números pseudoaleatorios