Ця стаття не має . |
Інверсивний конгруентний метод (або генератор Ейхенауера - Лена, також можливо Ейченауера - Лехна) - метод генерації псевдовипадкових чисел, заснований на використанні зворотнього по модулю числа для генерації наступного члена послідовності.
Опис
Інверсивний конгруентний метод був запропонований Ейченауером і Лехна в 1986 році як заміна лінійному конгруентному методу, що не володіє гратчастою структурою.
Даний метод полягає в обчисленні послідовності випадкових чисел в кільці класів за модулем натурального числа .
Основною відмінністю від лінійного методу є використання при генерації послідовності числа зворотнього до попереднього елемента, замість самого попереднього елемента.
Параметрами генератора є:
— сіль | |
— множник | |
— приріст |
У випадку простого n
Значення членів послідовності задається у вигляді:
if if
У випадку складеного n
Якщо число є складеним, елементи послідовності обчислюються наступним чином:
Параметри підбираються таким чинном, щоб .
Період
Послідовність періодична, причому період не перевищує розмірності кільця . Максимальний період досягається в разі, якщо многочлен є примітивним. Достатньою умовою максимального періоду послідовності є такий вибір констант і , щоб многочлен був незвідний.
У разі складеного максимально можливий період дорівнює (функція Ейлера).
Приклад
Інверсивний конгруентний генератор з параметрами генерує послідовність в кільці , де числа і , а також і протилежні один одному. В даному прикладі многочлен не можна звести в і числа не є його коренями, завдяки чому період максимальний і дорівнює .
Приклади реалізації
Python
def egcd(a, b): if a == 0: return (b, 0, 1) else: g, y, x = egcd(b % a, a) return (g, x - (b // a) * y, y) def modinv(a, m): gcd, x, y = egcd(a, m) if gcd != 1: return None # modular inverse does not exist else: return x % m def ICG(n, a, c, seed): if (seed == 0): return c; return (a * modinv(seed, n) + c) % n; seed = 1 n = 5 a = 2 c = 3 count = 10 for i in range(count): print seed seed = ICG(n, a, c, seed)
C++
#include <iostream> using namespace std; int mod_inv(int a, int n) { int b0 = n, t, q; int x0 = 0, x1 = 1; if (n == 1) return 1; while (a > 1) { q = a / n; t = n, n = a % n, a = t; t = x0, x0 = x1 - q * x0, x1 = t; } if (x1 < 0) x1 += b0; return x1; } int ICG(int n, int a, int c, int seed) { if (seed == 0) return c; return (a * mod_inv(seed, n) + c) % n; } int main(void) { int seed = 1; int n = 5; int a = 2; int c = 3; int count = 10; for (int i = 0; i < count; i++) { cout << seed << endl; seed = ICG(n, a, c, seed); } return 0; }
Складені інверсивні генератори
Основним недоліком інверсивних конгруентних генераторів є зростання складності обчислень при збільшенні періоду. Даний недолік виправлений в складених інверсивних конгруентних генераторах.
Конструкція складених інверсивних генераторів є об'єднанням двох або більше інверсивних конгруентних генераторів.
Нехай - різні прості числа, кожне . Для кожного індексу в межах нехай - послідовність елементів з періодом . Іншими словами, .
Нехай - послідовність випадкових чисел в межах , де .
Результуюча послідовність визначається як сума: .
Період результуючої послідовності .
Одним з переваг даного підходу є можливість використовувати інверсивні конгруентні генератори працюючі паралельно.
Приклад складеного інверсивного генератора
Нехай і . Для спрощення визначемо і . Для кожного обчислимо .
Тоді . Тобто ми отримаємо послідовність з періодом .
Щоб позбавитися від дробових чисел, помножимо кожен елемент отриманої послідовності на і отримаємо послідовність цілих чисел:
Переваги інверсивних конгруентних генераторів
Інверсивні конгруентні генератори застосовуються в практичних цілях по ряду причин.
По-перше, інверсивні конгруентні генератори мають досить непогану рівномірність, крім того отримані послідовності абсолютно позбавлені гратчастої структури, характерної для лінійних конгруентних генераторів.
По-друге, числові послідовності, отримані за допомогою ІКГ не мають небажаних статистичних відхилень. Отримані даним методом послідовності перевірені рядом статистичних тестів і залишаються стабільними при зміні параметрів.
По-третє, складені генератори володіють тими ж властивостями, що і поодинокі лінійні інверсивні генератори, але при цьому мають період значно перевищуючий період одиночних генераторів. Крім того, пристрій складених генераторів дозволяє отримати високий приріст продуктивності при використанні на багатопроцесорних системах.
Існує алгоритм, що дозволяє розробляти складені генератори, що володіють довжиною періоду і рівнем складності, а також хорошими статистичними властивостями вихідних послідовностей.
Недоліки інверсивних конгруентних генераторів
Основним недоліком інверсивних конгруентних генераторів є повільна швидкість генерації елементів послідовності: на обчислення одного елементу послідовності витрачається операцій множення.
Примітки
- Кнут, 2013.
- Hellekalek, 1995, с. 255.
- Amy Glen: On the Period Length of Pseudorandom Number Sequences, 2002, с. 67, 5.3.
- Amy Glen: On the Period Length of Pseudorandom Number Sequences, 2002, с. 69, 5.4.
- Hellekalek, 1995, с. 256.
- Eichenauer-Herrmannn, Grothe, Niederreiter et al, 1990, с. 81.
- Hellekalek, 1995, с. 261.
- Bubicz, Stoklosa, 2006, с. 2.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Cya stattya ne maye interviki posilan Vi mozhete dopomogti proyektu znajshovshi ta dodavshi yih do vidpovidnogo elementu Vikidanih Inversivnij kongruentnij metod abo generator Ejhenauera Lena takozh mozhlivo Ejchenauera Lehna metod generaciyi psevdovipadkovih chisel zasnovanij na vikoristanni zvorotnogo po modulyu chisla dlya generaciyi nastupnogo chlena poslidovnosti Priklad inversivnogo kongruentnogo generatora s parametrami n 7 seed 0 a 4 c 5OpisInversivnij kongruentnij metod buv zaproponovanij Ejchenauerom i Lehna v 1986 roci yak zamina linijnomu kongruentnomu metodu sho ne volodiye gratchastoyu strukturoyu Danij metod polyagaye v obchislenni poslidovnosti vipadkovih chisel X n displaystyle X n v kilci klasiv za modulem naturalnogo chisla n displaystyle n Osnovnoyu vidminnistyu vid linijnogo metodu ye vikoristannya pri generaciyi poslidovnosti chisla zvorotnogo do poperednogo elementa zamist samogo poperednogo elementa Parametrami generatora ye s e e d displaystyle seed sil a displaystyle a mnozhnik 0 a lt n displaystyle 0 leqslant a lt n b displaystyle b pririst 0 b lt n displaystyle 0 leqslant b lt n U vipadku prostogo n Znachennya chleniv poslidovnosti zadayetsya u viglyadi x 0 s e e d displaystyle x 0 seed x i 1 a x i 1 b mod n displaystyle x i 1 equiv ax i 1 b mod n if x i 0 displaystyle x i neq 0 x i 1 b displaystyle x i 1 b if x i 0 displaystyle x i 0 U vipadku skladenogo n Yaksho chislo X n displaystyle X n ye skladenim elementi poslidovnosti obchislyuyutsya nastupnim chinom x 0 s e e d displaystyle x 0 seed x i 1 a x i 1 b mod n displaystyle x i 1 equiv ax i 1 b mod n Parametri pidbirayutsya takim chinnom shob s e e d n 1 a n 1 displaystyle seed n 1 a n 1 PeriodPoslidovnist x i 1 displaystyle x i 1 periodichna prichomu period ne perevishuye rozmirnosti kilcya n displaystyle n Maksimalnij period n displaystyle n dosyagayetsya v razi yaksho mnogochlen f x x 2 b x a F n x displaystyle f x x 2 bx a in mathbb F n x ye primitivnim Dostatnoyu umovoyu maksimalnogo periodu poslidovnosti ye takij vibir konstant a displaystyle a i b displaystyle b shob mnogochlen f x displaystyle f x buv nezvidnij U razi skladenogo n displaystyle n maksimalno mozhlivij period dorivnyuye f n displaystyle varphi n funkciya Ejlera PrikladInversivnij kongruentnij generator z parametrami n 5 a 2 b 3 s e e d 1 displaystyle n 5 a 2 b 3 seed 1 generuye poslidovnist 1 0 3 2 4 1 displaystyle 1 0 3 2 4 1 v kilci F 5 displaystyle mathbb F 5 de chisla 1 displaystyle 1 i 4 displaystyle 4 a takozh 2 displaystyle 2 i 3 displaystyle 3 protilezhni odin odnomu V danomu prikladi mnogochlen f x x 2 3 x 2 displaystyle f x x 2 3x 2 ne mozhna zvesti v F 5 x displaystyle mathbb F 5 x i chisla 0 1 2 3 4 displaystyle 0 1 2 3 4 ne ye jogo korenyami zavdyaki chomu period maksimalnij i dorivnyuye n 5 displaystyle n 5 Prikladi realizaciyiPython def egcd a b if a 0 return b 0 1 else g y x egcd b a a return g x b a y y def modinv a m gcd x y egcd a m if gcd 1 return None modular inverse does not exist else return x m def ICG n a c seed if seed 0 return c return a modinv seed n c n seed 1 n 5 a 2 c 3 count 10 for i in range count print seed seed ICG n a c seed C include lt iostream gt using namespace std int mod inv int a int n int b0 n t q int x0 0 x1 1 if n 1 return 1 while a gt 1 q a n t n n a n a t t x0 x0 x1 q x0 x1 t if x1 lt 0 x1 b0 return x1 int ICG int n int a int c int seed if seed 0 return c return a mod inv seed n c n int main void int seed 1 int n 5 int a 2 int c 3 int count 10 for int i 0 i lt count i cout lt lt seed lt lt endl seed ICG n a c seed return 0 Skladeni inversivni generatoriOb yednannya dvoh inversivnih kongruetnih generatoriv Osnovnim nedolikom inversivnih kongruentnih generatoriv ye zrostannya skladnosti obchislen pri zbilshenni periodu Danij nedolik vipravlenij v skladenih inversivnih kongruentnih generatorah Konstrukciya skladenih inversivnih generatoriv ye ob yednannyam dvoh abo bilshe inversivnih kongruentnih generatoriv Nehaj p 1 p r displaystyle p 1 dots p r rizni prosti chisla kozhne p j 5 displaystyle p j geq 5 Dlya kozhnogo indeksu j displaystyle j v mezhah 1 j r displaystyle 1 leq j leq r nehaj x n j n 0 displaystyle x n j n geq 0 poslidovnist elementiv F p j displaystyle in mathbb F p j z periodom p j displaystyle p j Inshimi slovami x n j 0 n p j F p j displaystyle x n j 0 leq n leq p j in mathbb F p j Nehaj x n j n 0 displaystyle x n j n geq 0 poslidovnist vipadkovih chisel v mezhah x n j 0 1 displaystyle x n j in 0 1 de x n j x n j p j n 0 1 j r displaystyle x n j frac x n j p j n geq 0 1 leq j leq r Rezultuyucha poslidovnist x n n 0 displaystyle x n n geq 0 viznachayetsya yak suma x n T 1 x n 1 T 2 x n 2 T r x n r mod T displaystyle x n T 1 x n 1 T 2 x n 2 dots T r x n r mod T Period rezultuyuchoyi poslidovnosti T p 1 p 2 p r displaystyle T p 1 p 2 dots p r Odnim z perevag danogo pidhodu ye mozhlivist vikoristovuvati inversivni kongruentni generatori pracyuyuchi paralelno Priklad skladenogo inversivnogo generatoraNehaj r 2 p 1 5 displaystyle r 2 p 1 5 i p 2 7 displaystyle p 2 7 Dlya sproshennya viznachemo x k 1 k 0 0 1 2 3 4 displaystyle x k 1 k geq 0 0 1 2 3 4 dots i x k 2 k 0 0 1 2 3 4 5 6 displaystyle x k 2 k geq 0 0 1 2 3 4 5 6 dots Dlya kozhnogo 1 n 35 displaystyle 1 leq n leq 35 obchislimo x n x n 1 5 x n 2 7 displaystyle x n frac x n 1 5 frac x n 2 7 Todi x n n 0 0 0 displaystyle x n n geq 0 0 0 displaystyle 0 34 displaystyle 0 34 displaystyle 0 69 displaystyle 0 69 displaystyle 0 03 displaystyle 0 03 displaystyle 0 37 displaystyle 0 37 displaystyle 0 71 displaystyle 0 71 displaystyle 0 06 displaystyle 0 06 displaystyle 0 4 displaystyle 0 4 displaystyle 0 74 displaystyle 0 74 displaystyle 0 09 displaystyle 0 09 displaystyle 0 43 displaystyle 0 43 displaystyle 0 77 displaystyle 0 77 displaystyle 0 11 displaystyle 0 11 displaystyle 0 46 displaystyle 0 46 displaystyle 0 8 displaystyle 0 8 displaystyle 0 14 displaystyle 0 14 displaystyle 0 49 displaystyle 0 49 displaystyle 0 83 displaystyle 0 83 displaystyle 0 17 displaystyle 0 17 displaystyle 0 51 displaystyle 0 51 displaystyle 0 86 displaystyle 0 86 displaystyle 0 2 displaystyle 0 2 displaystyle 0 54 displaystyle 0 54 displaystyle 0 89 displaystyle 0 89 displaystyle 0 23 displaystyle 0 23 displaystyle 0 57 displaystyle 0 57 displaystyle 0 91 displaystyle 0 91 displaystyle 0 26 displaystyle 0 26 displaystyle 0 6 displaystyle 0 6 displaystyle 0 94 displaystyle 0 94 displaystyle 0 29 displaystyle 0 29 displaystyle 0 63 displaystyle 0 63 displaystyle 0 97 displaystyle 0 97 displaystyle 0 31 displaystyle 0 31 displaystyle 0 66 displaystyle 0 66 displaystyle 0 0 displaystyle 0 0 Tobto mi otrimayemo poslidovnist z periodom 5 7 35 displaystyle 5 times 7 35 Shob pozbavitisya vid drobovih chisel pomnozhimo kozhen element otrimanoyi poslidovnosti na 35 displaystyle 35 i otrimayemo poslidovnist cilih chisel x n i n t n 0 0 displaystyle x n int n geq 0 0 12 displaystyle 12 24 displaystyle 24 1 displaystyle 1 13 displaystyle 13 25 displaystyle 25 2 displaystyle 2 14 displaystyle 14 26 displaystyle 26 3 displaystyle 3 15 displaystyle 15 26 displaystyle 26 4 displaystyle 4 16 displaystyle 16 28 displaystyle 28 5 displaystyle 5 17 displaystyle 17 28 displaystyle 28 6 displaystyle 6 18 displaystyle 18 30 displaystyle 30 7 displaystyle 7 19 displaystyle 19 31 displaystyle 31 8 displaystyle 8 20 displaystyle 20 32 displaystyle 32 9 displaystyle 9 21 displaystyle 21 33 displaystyle 33 10 displaystyle 10 22 displaystyle 22 34 displaystyle 34 11 displaystyle 11 22 displaystyle 22 0 displaystyle 0 Perevagi inversivnih kongruentnih generatorivInversivni kongruentni generatori zastosovuyutsya v praktichnih cilyah po ryadu prichin Po pershe inversivni kongruentni generatori mayut dosit nepoganu rivnomirnist krim togo otrimani poslidovnosti absolyutno pozbavleni gratchastoyi strukturi harakternoyi dlya linijnih kongruentnih generatoriv Po druge chislovi poslidovnosti otrimani za dopomogoyu IKG ne mayut nebazhanih statistichnih vidhilen Otrimani danim metodom poslidovnosti perevireni ryadom statistichnih testiv i zalishayutsya stabilnimi pri zmini parametriv Po tretye skladeni generatori volodiyut timi zh vlastivostyami sho i poodinoki linijni inversivni generatori ale pri comu mayut period znachno perevishuyuchij period odinochnih generatoriv Krim togo pristrij skladenih generatoriv dozvolyaye otrimati visokij pririst produktivnosti pri vikoristanni na bagatoprocesornih sistemah Isnuye algoritm sho dozvolyaye rozroblyati skladeni generatori sho volodiyut dovzhinoyu periodu i rivnem skladnosti a takozh horoshimi statistichnimi vlastivostyami vihidnih poslidovnostej Nedoliki inversivnih kongruentnih generatorivOsnovnim nedolikom inversivnih kongruentnih generatoriv ye povilna shvidkist generaciyi elementiv poslidovnosti na obchislennya odnogo elementu poslidovnosti vitrachayetsya O l o g n displaystyle O log n operacij mnozhennya PrimitkiKnut 2013 Hellekalek 1995 s 255 Amy Glen On the Period Length of Pseudorandom Number Sequences 2002 s 67 5 3 Amy Glen On the Period Length of Pseudorandom Number Sequences 2002 s 69 5 4 Hellekalek 1995 s 256 Eichenauer Herrmannn Grothe Niederreiter et al 1990 s 81 Hellekalek 1995 s 261 Bubicz Stoklosa 2006 s 2