Lt304888.ru

Туристические услуги

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

12-10-2023

Перейти к: навигация, поиск

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

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

Описание

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

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

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

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

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

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

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

  if
if

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

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

 

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

Период

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

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

Пример

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

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

Python

C++

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечания

  1. 1 2 Кнут, 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. 1 2 Eichenauer-Herrmannn, Niederreiter, 1992
  8. 1 2 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»

Литература

Книги
  • Кнут Д. Э. Искусство программирования: Том 2. Получисленные алгоритмы — Вильямс, 2013. — 828 с. — ISBN 978-5-8459-0081-4
    <a href="https://wikidata.org/wiki/Track:Q21725367"></a>
Статьи
  • Eichenauer J., Lehn J. A non-linear congruential pseudo random number generator // Statistische Hefte — Springer Berlin Heidelberg, 1986. — Vol. 27, Iss. 1. — P. 315—326. — ISSN 0932-5026 — doi:10.1007/BF02932576
    <a href="https://wikidata.org/wiki/Track:Q21725397"></a>
  • Eichenauer-Herrmannn J., Grothe H., On the lattice structure of a nonlinear generator with modulus 2ᵅ // J. Comput. Appl. Math. — 1990. — Vol. 31, Iss. 1. — P. 81—85. — ISSN 0377-0427 — doi:10.1016/0377-0427(90)90338-Z
    <a href="https://wikidata.org/wiki/Track:Q21725884"></a>
  • Eichenauer-Herrmannn J. Inversive congruential pseudorandom numbers avoid the planes // doi:10.2307/2008543
    <a href="https://wikidata.org/wiki/Track:Q21725397"></a>
  • Eichenauer-Herrmannn J., Lower bounds for the discrepancy of inversive congruential pseudorandom numbers with power of two modulus // doi:10.2307/2153216
    <a href="https://wikidata.org/wiki/Track:Q21725397"></a>
  • Eichenauer-Herrmannn J. Statistical independence of a new class of inversive congruential pseudorandom numbers // doi:10.1090/S0025-5718-1993-1159168-9
    <a href="https://wikidata.org/wiki/Track:Q21725397"></a>
  • Chou W. S. On inversive maximal period polynomials over finite fields // Appl. Algebr. Eng. Comm. — Springer-Verlag, 1995. — Vol. 6, Iss. 4. — P. 245—250. — ISSN 0938-1279 — doi:10.1007/BF01235718
    <a href="https://wikidata.org/wiki/Track:Q21745601"></a>
  • Hellekalek P. Inversive pseudorandom number generators: concepts, results and links // WSC'95: Proceedings, 1995 Winter Simulation Conference — doi:10.1145/224401.224612
    <a href="https://wikidata.org/wiki/Track:Q669561"></a>
  • Bubicz J., Stoklosa J. Compound Inversive Congruential Generator Design Algorithm // IMCSIT 2006: Proceedings of the 4th International Multiconference on Computer Science and Information TechnologyAmman: ASPU, 2006. — Vol. 1. — P. 1—6.
    <a href="https://wikidata.org/wiki/Track:Q21752599"></a>
  • Gille-Genest Anne Pseudo-Random Numbers Generators. — 2012.
  • Glen Amy On the Period Length of Pseudorandom Number Sequences // The University of Adelaide: Honours in Pure Mathematics. — 2002.

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

© 2020–2023 lt304888.ru, Россия, Волжский, ул. Больничная 49, +7 (8443) 85-29-01