El lineal de período largo bien equidistribuido (WELL) es una familia de generadores de números pseudoaleatorios desarrollados 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 operacional
La estructura es similar a Mersenne Twister , un estado grande formado 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, produciendo mejores propiedades estadísticas.
Cada paso del generador lee cinco palabras de estado: los 32 bits más antiguos (que pueden abarcar un límite de palabras si el tamaño del estado no es un múltiplo de 32), los 32 bits más nuevos y otras tres palabras intermedias.
Luego, una serie de ocho transformaciones de una sola palabra (en su mayoría de la forma x := x ⊕ (x >> k)
) y seis operaciones exclusivas-o combinan esas en dos palabras, que se convierten en las dos palabras de estado más nuevas, una de las cuales será la salida.
Variantes
Se proporcionan parámetros específicos para los siguientes generadores:
- WELL512a
- WELL521a, WELL521b
- WELL607a, WELL607b
- WELL800a, WELL800b
- WELL1024a, WELL1024b
- WELL19937a, WELL19937b, WELL19937c
- WELL21701a
- WELL23209a, WELL23209b
- WELL44497a, WELL44497b.
Los números dan 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, WELL607 en Java
- Implementaciones de WELL512, WELL1024 en BBC BASIC
- Implementaciones modificadas "equidistribuidas al máximo" de WELL19937, WELL44497 en C (gratis para uso no comercial)
- Implementación de WELL512 en C (dominio público)
Referencias
- ↑ Panneton, François O .; l'Ecuyer, Pierre; Matsumoto, Pierre (marzo de 2006). "Generadores mejorados de largo período basados en recurrencias lineales módulo 2" (PDF) . Transacciones ACM en software matemático . 32 (1): 1–16. CiteSeerX 10.1.1.73.5499 . doi : 10.1145 / 1132973.1132974 . S2CID 7368302 .