Инверсный конгруэнтный метод

Инверсный конгруэнтный метод (или генератор Эйхенауэра — Лена, также возможно Эйченауэра — Лехна) — метод генерации псевдослучайных чисел, основанный на использовании обратного по модулю числа для генерации следующего члена последовательности.

Пример инверсного конгруэнтного генератора с параметрами n = 7, seed = 0, a = 4, c = 5

Описание

Инверсный конгруэнтный метод был предложен Эйченауэром и Лехном в 1986 году[1] как замена линейному конгруэнтному методу, не обладающему решётчатой структурой[2].

Данный метод состоит в вычислении последовательности случайных чисел в кольце вычетов по модулю натурального числа .

Основным отличием от линейного метода является использование при генерации последовательности числа, обратного к предыдущему элементу, вместо самого предыдущего элемента.

Параметрами генератора являются[3]:

 — соль
 — множитель
 — приращение

В случае простого n

Значение членов последовательности задается в виде:

  if
if

В случае составного n

Если число является составным, элементы последовательности вычисляются следующим образом:

 

Параметры подбираются таким образом, чтобы .

Период

Последовательность периодична, причём период не превышает размерности кольца . Максимальный период достигается в случае, если многочлен является примитивным. Достаточным условием максимального периода последовательности является такой выбор констант и , чтобы многочлен был неприводим[4].

В случае составного максимально возможный период равен (функция Эйлера)[5].

Пример

Инверсный конгруэнтный генератор с параметрами генерирует последовательность в кольце , где числа и , а также и обратны друг другу. В данном примере многочлен неприводим в и числа не являются его корнями, благодаря чему период максимален и равен .

Примеры реализации

Python

C++

Составные инверсные генераторы

Объединение двух инверсных конгруэнтных генераторов

Основным недостатком инверсных конгруэнтных генераторов является возрастание сложности вычислений при увеличении периода. Данный недостаток исправлен в составных инверсных конгруэнтных генераторах.

Конструкция составных инверсных генераторов представляет из себя объединение двух или более инверсных конгруэнтных генераторов.

Пусть  — различные простые числа, каждое . Для каждого индекса в пределах пусть  — последовательность элементов с периодом . Другими словами, .

Пусть  — последовательность случайных чисел в пределах , где .

Результирующая последовательность определяется как сумма: .

Период результирующей последовательности [6].

Одни из преимуществ данного подхода является возможность использовать инверсные конгруэнтные генераторы работающие параллельно.

Пример составного инверсного генератора

Пусть и . Для упрощения положим and . Для каждого вычислим .

Тогда . То есть мы получили последовательность с периодом .

Чтобы избавится от дробных чисел, мы может умножить каждый элемент полученной последовательности на и получить последовательность целых чисел:

Преимущества инверсных конгруэнтных генераторов

Инверсные конгруэнтные генераторы применяются в практических целях по ряду причин.

Во-первых, инверсные конгруэнтные генераторы обладают достаточно неплохой равномерностью[7], кроме того полученные последовательности совершенно лишены решетчатой структуры, характерной для линейных конгруэнтных генераторов[1][8][9].

Во-вторых, двоичные последовательности, полученные с помощью ИКГ не имеют нежелательных статистических отклонений. Полученные данным методом последовательности проверены рядом статистических тестов и остаются стабильными при изменении параметров[7][8][10][11].

В-третьих, составные генераторы обладают теми же свойствами, что и одиночные линейные инверсные генераторы[12], но при этом имеют период значительно превышающий период одиночных генераторов[13]. Кроме того, устройство составных генераторов позволяет добиться высокого прироста производительности при использовании на многопроцессорных системах[14].

Существует алгоритм, позволяющий разрабатывать составные генераторы, обладающие предсказуемыми длиной периода и уровнем сложности, а также хорошими статистическими свойствами выходных последовательностей [15].

Недостатки инверсных конгруэнтных генераторов

Основным недостатком инверсных конгруэнтных генераторов является медленная скорость генерации элементов последовательности: на вычисление одного элемента последовательности затрачивается операций умножения[16].

Примечания

  1. Кнут, 2013, с. 45.
  2. Eichenauer, Lehn, 1986.
  3. Hellekalek, 1995, p. 255: «We have to choose the modulus p, a multiplier a, an additive term b».
  4. Amy Glen: On the Period Length of Pseudorandom Number Sequences, 2002, 5.3, p. 67: «If x2-bx-a is a primitive polynomial over Fp then Xi has full period length p».
  5. Amy Glen: On the Period Length of Pseudorandom Number Sequences, 2002, 5.4, p. 69: «The sequence Xi is purely periodic with period length d ≤ φ(m)».
  6. Hellekalek, 1995, p. 256: «It is elementary to see that the period of the sequence (Xn)n equals M := p1*p2*...* pr».
  7. Eichenauer-Herrmannn, Niederreiter, 1992.
  8. Eichenauer-Herrmannn, 1991.
  9. Eichenauer-Herrmannn, Grothe, Niederreiter et al, 1990, p. 81: «These generators do not show the simple lattice structure of the widely used linear congruential generators».
  10. Eichenauer-Herrmannn, 1993.
  11. Hellekalek, 1995, p. 261: «The excellent theoretical and empirical properties of inversive methods remain stable under the variation of parameters, provided we have maximal period length».
  12. Bubicz, Stoklosa, 2006, p. 2: «Compound approach gives the same outstanding properties of produced sequences as single inversive generators».
  13. Bubicz, Stoklosa, 2006, p. 2: «Compound inversive generators allow obtaining period length significantly greater than obtained by a single ICG».
  14. Bubicz, Stoklosa, 2006, p. 2: «They seem to be designed for application with multiprocessor parallel hardware platforms».
  15. Bubicz, Stoklosa, 2006, p. 2: «There exists steady and simple way of parameter choice, based on the Chou algorithm. It guarantees maximum period length».
  16. Anne Gille-Genest: Pseudo-Random Numbers Generators, 2012, p. 12: «The main disadvantage of those both inverse generators is that a calculation of one random number takes O(log m) multiplication in Fm so the algorithm is not fast».

Литература

Книги
Статьи

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.