Хорошо равнораспределенная длиннопериодная линейная
![]() | В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Well Equidistributed Long- period Linear (WELL) — это семейство генераторов псевдослучайных чисел, разработанное в 2006 году Франсуа Паннетоном , Пьером Л'Экуйером и Макото Мацумото ( 松本 眞 ) . [1] Это форма регистра сдвига с линейной обратной связью, оптимизированная для программной реализации на 32-битной машине.
Операционное проектирование
[ редактировать ]Структура аналогична Mersenne Twister , большому состоянию, состоящему из предыдущих выходных слов (по 32 бита каждое), из которого новое выходное слово генерируется с использованием линейных рекуррент по модулю 2 по конечному двоичному полю. . Однако более сложная рекуррентность дает более плотный генераторный полином, обеспечивающий лучшие статистические свойства.
На каждом этапе генератор считывает пять слов состояния: самые старые 32 бита (которые могут выходить за границу слова, если размер состояния не кратен 32), самые новые 32 бита и три других слова между ними.
Затем серия из восьми однословных преобразований (в основном формы а шесть операций «исключающее-или» объединяют их в два слова, которые становятся двумя новейшими словами состояния, одно из которых будет выходным.
Варианты
[ редактировать ]Конкретные параметры предусмотрены для следующих генераторов:
- НУЖ512а
- НУЖ521а, НУЖ521б
- СКВА607а, СКВА607b
- НУЖ800а, НУЖ800b
- WELL1024a, WELL1024b
- WELL19937a, WELL19937b, WELL19937c
- НУЖ21701а
- НЭЛ23209а, НЭЛ23209б
- WELL44497a, WELL44497b.
Числа обозначают размер состояния в битах; буквенные суффиксы обозначают варианты одного и того же размера.
Реализации
[ редактировать ]- Реализации WELL512a, WELL1024a, WELL19937a, WELL19937c, WELL44497a, WELL44497b на C (бесплатно для некоммерческого использования)
- Реализации тех же алгоритмов в Scala
- Реализации на C++
- Реализации WELL512, WELL1024, WELL607 на Java
- Реализации WELL512, WELL1024 в BBC BASIC
- Модифицированные «максимально равнораспределенные» реализации WELL19937, WELL44497 на C (бесплатно для некоммерческого использования).
- Реализация WELL512 на C (общественное достояние)
Ссылки
[ редактировать ]- ^ Паннетон, Франсуа О.; л'Экуйер, Пьер; Мацумото, Макото (март 2006 г.). «Улучшенные долгопериодические генераторы на основе линейных рекуррент по модулю 2» (PDF) . Транзакции ACM в математическом программном обеспечении . 32 (1): 1–16. CiteSeerX 10.1.1.73.5499 . дои : 10.1145/1132973.1132974 . S2CID 7368302 .