Цю статтю потрібно повністю переписати відповідно до Вікіпедії. (травень 2019) |
Генератор Фібоначчі (англ. lagged Fibonacci generator) — генератор псевдовипадкових чисел, також названий адитивний генератор.
На відмінну від генераторів, що використовують лінійний конгруентий метод, генератор Фібоначчі можна використовувати в статистичних алгоритмах, які потребують високого розширення.
У зв'язку з цим лінійний конгруентний алгоритм поступово втратив свою популярність і його місце зайняло сімейство алгоритмів Фібоначчі, які можуть бути рекомендовані для використання в алгоритмах.
Історія
Послідовність, в якій залежить більше, ніж від одного з попередніх значень, і яка визначається наступною формулою:
носить назву послідовність Фібоначчі.
На початку 50-х років вивчався даний алгоритм, проте, дослідження показали, що цей генератор, як джерело випадкових чисел, був неефективний. Вчені запропонували допрацьовану формулу послідовності Фібоначчі у вигляді:
Однак, позитивний результат вийшов лише при .
У 1958 році було виведено послідовність:
де, , — парне число, - довільні цілі не всі парні числа. Числа 24 і 55 обрані так, щоб визначалася послідовність, молодші значущі числові розряди якої мають довжину періоду .
Очевидними перевагами даного алгоритму є його швидкість, оскільки він не вимагає множення чисел, а також, довжина періоду.
Формула
Адитивні генератори генерують замість випадкових бітів випадкові слова.
Для роботи адитивному генератору потрібно якийсь початковий стан, який є ключем - набір n-бітових слів: 16-бітових, 32-бітових, 64-бітових слів і т. Д. - .
Знаючи початковий стан, можна обчислити е слово генератора за формулою :
причому період генератора повинен бути більше або дорівнювати .
Приклади алгоритмів, на основі адитивних генераторів
S | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|
3 | 5 | 17 | 21 | 63 | 125 | 377 | |
Випадкові послідовності | |||||||
Г е н е р а т о р и
Ф і б о н н а ч і |
| 0011 | 0001, 0111 | 00001111, 01011010 | 00000101, 00011011, 00100111, 01011111 | 00000011, 00001001, 00010111, 00011101, 00101011, 00110101, 00111111, 01101111 | 00000001, 00000111, 00001011, 00001101, 00010011, 00010101, 00011001, 00011111, 00100101, 00101111, 00110111, 00111011, 00111101, 01010111, 01011011, 01111111 |
При для випадкової послідовності усі різні, причому половина їх інверсні. Жирним шрифтом виділені послідовності де Брейна.
1) Один з широко поширених генераторів Фібоначчі ґрунтується на наступній ітеративній формулі:
де - дійсні числа з діапазону , - цілі додатні числа, звані лагами. При реалізації через цілі числа досить формули (при цьому будуть відбуватися арифметичні переповнення). Для роботи генератору потрібно знати попередніх згенерованих випадкових чисел. При програмній реалізації для зберігання згенерованих випадкових чисел використовується кінцева циклічна чергу на базі масиву. Для старту потрібно випадкових чисел, які можуть бути згенеровані простим конгруентним методом.
Отримувані випадкові числа мають гарні статистичні властивості, причому всі біти випадкового числа рівнозначні за статистичними властивостями. Період генератора може бути оцінений за такою формулою:
де - число бітів дійсного числа.
Вибір параметрів
Лаги a і b - «магічні» і їх не слід вибирати довільно. Рекомендуються наступні значення лагів: , або . Якість одержуваних випадкових чисел залежить від значення константи, і чим воно більше, тим вище розмірність простору, в якому зберігається рівномірність випадкових векторів, утворених з отриманих випадкових чисел. У той же час, зі збільшенням величини константи a збільшується обсяг використаної алгоритмом пам'яті.
Значення можна рекомендувати для простих додатків, які не використовують вектори високої розмірності з випадковими компонентами. Значення дозволяють отримувати числа, задовільні для більшості алгоритмів, вимогливих до якості випадкових чисел. Значення дозволяють отримувати якісні випадкові числа і використовуються в алгоритмах, які працюють з випадковими векторами високої розмірності. Описаний генератор випадкових чисел (з лагами 20 і 5) використовується в широко відомій системі Matlab (автором першої версії цієї системи був Д. Каханер).
В даний час підібрано досить багато пар чисел a і b, наведемо деякі з них:
2) Брюс Шнайєр у своїй роботі «Прикладна криптографія» наводить приклади 3-х алгоритмів на основі адитивних генераторів :
Алгоритм Fish
Fish - це адитивний генератор, заснований на методах, які використовуються в проріджувальному генераторі. Він видає потік 32-бітових слів, які можуть бути використані (за допомогою XOR) з потоком відкритого тексту для отримання шифротекста або з потоком шифротекста для отримання відкритого тексту. Назва алгоритму являє собою скорочення від Fibonacci shrinking generator - проріджувальний генератор Фіббоначі.
По-перше, використовуйте два наступних адитивних генератора. Ключем є початкові стани цих генераторів.
Ці послідовності проріджуються попарно в залежності від молодшого значущого біта : якщо його значення дорівнює 1, то пара використовується, якщо 0 — ігнорується. — це послідовність використаних слів , a — це послідовність використаних слів . Для генерації двох 32-бітових слів-результатів і ці слова використовується парами — .
Цей алгоритм швидкий на процесорі i486/33 реалізація Fish на мові С шифрує дані зі швидкістю 15-Мбіт/с. На жаль він є небезпечним, порядок розкриття становить близько 2 40.
Алгоритм Pike
Pike - це збіднена і урізана версія Fish, запропонована Росом Андерсоном, тим, хто зламав Fish. Він використовує три адитивних генератора. Наприклад:
Для генерації слова потоку ключів погляньте на біти перенесення при додаванні. Якщо всі три однакові (всі нулі або всі одиниці), то тактуються всі три генератора. Якщо немає, то тактуються тільки два співпадаючих генератора. Збережіть біти перенесення для наступного разу. Остаточним виходом є XOR виходів трьох генераторів.
Pike швидше Fish, так як в середньому для отримання результату потрібно 2.75 дії, а не 3. Він також занадто новий, щоб йому довіряти, але виглядає непогано.
Алгоритм Mush
Mush є взаємно проріджувальний генератор. Його роботу пояснити легко. Візьмемо два адитивних генератора: А і В. Якщо біт перенесення А встановлено, тактується В. Якщо біт перенесення В встановлено, тактується А. Тактуємо А і при переповненні встановлюємо біт перенесення. Тактуємо В і при переповненні встановлюємо біт перенесення. Остаточним виходом є XOR виходів А і В. Найпростіше використовувати ті ж генератори, що і в Fish:
В середньому для генерації одного вихідного слова потрібно три ітерації генератора. І якщо коефіцієнти адитивного генератора обрані правильно і є взаємно простими, довжина вихідної послідовності буде максимальна.
Примітки
- Кнут Д. Искусство программирования. — том 2. — 3-е издание. — 2001 г. — гл.3.2.2.
- Шнайер Б. Прикладная криптография. Протоколы, алгоритмы и исходные тексты на языке C. — 2002 г. — С. 291.
- В.А.Песошин, В.М.Кузнецов, А.С.Кузнецова, А.Р.Шамеева - Генераторы псевдослучайных последовательностей немаксимальной длины на регистрах сдвига.
- Bruce, Schneier. 16.9 Additive Generators // Applied cryptography: protocols, algorithms, and source code in C. John Wiley & Sons, Inc., New York (1996).
- Шнайер Б. Прикладная криптография. Протоколы, алгоритмы и исходные тексты на языке C. — 2002 г. — гл.16.9.
Посилання
- http://www.phy.ornl.gov/csep/rn/node20.html [ 30 січня 2014 у Wayback Machine.]
- Aluru, S. (1997). Lagged Fibonacci Random Number Generators for Distributed Memory Parallel Computers. [ 26 березня 2014 у Wayback Machine.] JOURNAL OF PARALLEL AND DISTRIBUTED COMPUTING, 45, 1-12.
Ця стаття має кілька недоліків. Будь ласка, допоможіть удосконалити її або обговоріть ці проблеми на . refless |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Cyu stattyu potribno povnistyu perepisati vidpovidno do standartiv yakosti Vikipediyi Vi mozhete dopomogti pererobivshi yiyi Mozhlivo mistit zauvazhennya shodo potribnih zmin traven 2019 Generator Fibonachchi angl lagged Fibonacci generator generator psevdovipadkovih chisel takozh nazvanij aditivnij generator Na vidminnu vid generatoriv sho vikoristovuyut linijnij kongruentij metod generator Fibonachchi mozhna vikoristovuvati v statistichnih algoritmah yaki potrebuyut visokogo rozshirennya U zv yazku z cim linijnij kongruentnij algoritm postupovo vtrativ svoyu populyarnist i jogo misce zajnyalo simejstvo algoritmiv Fibonachchi yaki mozhut buti rekomendovani dlya vikoristannya v algoritmah IstoriyaPoslidovnist v yakij X n 1 displaystyle X n 1 zalezhit bilshe nizh vid odnogo z poperednih znachen i yaka viznachayetsya nastupnoyu formuloyu X n 1 X n X n 1 mod 2 m displaystyle X n 1 X n X n 1 mod 2 m nosit nazvu poslidovnist Fibonachchi Na pochatku 50 h rokiv vivchavsya danij algoritm prote doslidzhennya pokazali sho cej generator yak dzherelo vipadkovih chisel buv neefektivnij Vcheni zaproponuvali dopracovanu formulu poslidovnosti Fibonachchi u viglyadi X n 1 X n X n k mod 2 m displaystyle X n 1 X n X n k mod 2 m Odnak pozitivnij rezultat vijshov lishe pri k 16 displaystyle k geq 16 U 1958 roci bulo vivedeno poslidovnist X n X n 24 X n 55 mod 2 m displaystyle X n X n 24 X n 55 mod 2 m de n 55 displaystyle n geq 55 m displaystyle m parne chislo X 0 X 1 X 54 displaystyle X 0 X 1 X 54 dovilni cili ne vsi parni chisla Chisla 24 i 55 obrani tak shob viznachalasya poslidovnist molodshi znachushi chislovi rozryadi X n mod 2 displaystyle X n mod 2 yakoyi mayut dovzhinu periodu 2 55 1 displaystyle 2 55 1 Ochevidnimi perevagami danogo algoritmu ye jogo shvidkist oskilki vin ne vimagaye mnozhennya chisel a takozh dovzhina periodu FormulaAditivni generatori generuyut zamist vipadkovih bitiv vipadkovi slova Dlya roboti aditivnomu generatoru potribno yakijs pochatkovij stan yakij ye klyuchem nabir n bitovih sliv 16 bitovih 32 bitovih 64 bitovih sliv i t D X 1 X 2 X k displaystyle X 1 X 2 X k Znayuchi pochatkovij stan mozhna obchisliti i displaystyle i e slovo generatora za formuloyu X i X i a X i b X i k mod 2 m displaystyle X i X i a X i b X i k mod 2 m prichomu period generatora povinen buti bilshe abo dorivnyuvati 2 m 1 displaystyle 2 m 1 Prikladi algoritmiv na osnovi aditivnih generatoriv x 1 S S 1 7 displaystyle x oplus 1 S quad quad S overline 1 7 S 1 2 3 4 5 6 7 f x displaystyle f x 3 5 17 21 63 125 377 Vipadkovi poslidovnosti 1 2 displaystyle 1 2 1 4 displaystyle 1 4 2 4 displaystyle 2 4 2 8 displaystyle 2 8 4 8 displaystyle 4 8 8 8 displaystyle 8 8 16 8 displaystyle 16 8 G e n e r a t o r i F i b o n n a ch i M 1 displaystyle M 1 01 M 3 displaystyle M 3 0011 M 3 P displaystyle M 3 Pi 0001 0111 M 7 P displaystyle M 7 Pi 00001111 01011010 M 7 P displaystyle M 7 Pi 00000101 00011011 00100111 01011111 M 7 P displaystyle M 7 Pi 00000011 00001001 00010111 00011101 00101011 00110101 00111111 01101111 M 7 P displaystyle M 7 Pi 00000001 00000111 00001011 00001101 00010011 00010101 00011001 00011111 00100101 00101111 00110111 00111011 00111101 01010111 01011011 01111111 Pri S 5 7 displaystyle S overline 5 7 dlya vipadkovoyi poslidovnosti 4 8 16 8 displaystyle 4 8 16 8 usi M 7 P P displaystyle M 7 Pi Pi rizni prichomu polovina yih inversni Zhirnim shriftom vidileni poslidovnosti de Brejna Osnovne dzherelo 1 Odin z shiroko poshirenih generatoriv Fibonachchi gruntuyetsya na nastupnij iterativnij formuli X k X k a X k b if X k a X k b X k a X k b 1 if X k a lt X k b displaystyle X k begin cases X k a X k b amp text if X k a geq X k b X k a X k b 1 amp text if X k a lt X k b end cases de X k displaystyle X k dijsni chisla z diapazonu 0 1 displaystyle 0 1 a b displaystyle a b cili dodatni chisla zvani lagami Pri realizaciyi cherez cili chisla dosit formuli X k X k a X k b displaystyle X k X k a X k b pri comu budut vidbuvatisya arifmetichni perepovnennya Dlya roboti generatoru potribno znati max a b displaystyle max a b poperednih zgenerovanih vipadkovih chisel Pri programnij realizaciyi dlya zberigannya zgenerovanih vipadkovih chisel vikoristovuyetsya kinceva ciklichna chergu na bazi masivu Dlya startu potribno max a b displaystyle max a b vipadkovih chisel yaki mozhut buti zgenerovani prostim kongruentnim metodom Otrimuvani vipadkovi chisla mayut garni statistichni vlastivosti prichomu vsi biti vipadkovogo chisla rivnoznachni za statistichnimi vlastivostyami Period generatora mozhe buti ocinenij za takoyu formuloyu T 2 max a b 1 2 ℓ displaystyle T 2 max a b 1 cdot 2 ell de ℓ displaystyle ell chislo bitiv dijsnogo chisla Vibir parametriv Lagi a i b magichni i yih ne slid vibirati dovilno Rekomenduyutsya nastupni znachennya lagiv a b 55 24 displaystyle a b 55 24 17 5 displaystyle 17 5 abo 97 33 displaystyle 97 33 Yakist oderzhuvanih vipadkovih chisel zalezhit vid znachennya konstanti i chim vono bilshe tim vishe rozmirnist prostoru v yakomu zberigayetsya rivnomirnist vipadkovih vektoriv utvorenih z otrimanih vipadkovih chisel U toj zhe chas zi zbilshennyam velichini konstanti a zbilshuyetsya obsyag vikoristanoyi algoritmom pam yati Znachennya a b 17 5 displaystyle a b 17 5 mozhna rekomenduvati dlya prostih dodatkiv yaki ne vikoristovuyut vektori visokoyi rozmirnosti z vipadkovimi komponentami Znachennya a b 55 24 displaystyle a b 55 24 dozvolyayut otrimuvati chisla zadovilni dlya bilshosti algoritmiv vimoglivih do yakosti vipadkovih chisel Znachennya a b 97 33 displaystyle a b 97 33 dozvolyayut otrimuvati yakisni vipadkovi chisla i vikoristovuyutsya v algoritmah yaki pracyuyut z vipadkovimi vektorami visokoyi rozmirnosti Opisanij generator vipadkovih chisel z lagami 20 i 5 vikoristovuyetsya v shiroko vidomij sistemi Matlab avtorom pershoyi versiyi ciyeyi sistemi buv D Kahaner V danij chas pidibrano dosit bagato par chisel a i b navedemo deyaki z nih 24 55 38 89 37 100 30 127 83 258 107 378 273 607 1029 2281 576 3217 4178 9689 displaystyle 24 55 38 89 37 100 30 127 83 258 107 378 273 607 1029 2281 576 3217 4178 9689 2 Bryus Shnajyer u svoyij roboti Prikladna kriptografiya navodit prikladi 3 h algoritmiv na osnovi aditivnih generatoriv Algoritm Fish Fish ce aditivnij generator zasnovanij na metodah yaki vikoristovuyutsya v proridzhuvalnomu generatori Vin vidaye potik 32 bitovih sliv yaki mozhut buti vikoristani za dopomogoyu XOR z potokom vidkritogo tekstu dlya otrimannya shifroteksta abo z potokom shifroteksta dlya otrimannya vidkritogo tekstu Nazva algoritmu yavlyaye soboyu skorochennya vid Fibonacci shrinking generator proridzhuvalnij generator Fibbonachi Po pershe vikoristovujte dva nastupnih aditivnih generatora Klyuchem ye pochatkovi stani cih generatoriv A i A i 55 A i 24 mod 2 32 displaystyle A i A i 55 A i 24 mod 2 32 B i B i 52 B i 19 mod 2 32 displaystyle B i B i 52 B i 19 mod 2 32 Ci poslidovnosti proridzhuyutsya poparno v zalezhnosti vid molodshogo znachushogo bita B i displaystyle B i yaksho jogo znachennya dorivnyuye 1 to para vikoristovuyetsya yaksho 0 ignoruyetsya C j displaystyle C j ce poslidovnist vikoristanih sliv A i displaystyle A i a D j displaystyle D j ce poslidovnist vikoristanih sliv B i displaystyle B i Dlya generaciyi dvoh 32 bitovih sliv rezultativ K 2 j displaystyle K 2j i K 2 j 1 displaystyle K 2j 1 ci slova vikoristovuyetsya parami C 2 j C 2 j 1 D 2 j D 2 j 1 displaystyle C 2j C 2j 1 D 2j D 2j 1 E 2 j C 2 j D 2 j D 2 j 1 displaystyle E 2j C 2j oplus D 2j land D 2j 1 F 2 j D 2 j 1 E 2 j C 2 j 1 displaystyle F 2j D 2j 1 oplus E 2j land C 2j 1 K 2 j E 2 j F 2 j displaystyle K 2j E 2j oplus F 2j K 2 j 1 C 2 j 1 F 2 j displaystyle K 2j 1 C 2j 1 oplus F 2j Cej algoritm shvidkij na procesori i486 33 realizaciya Fish na movi S shifruye dani zi shvidkistyu 15 Mbit s Na zhal vin ye nebezpechnim poryadok rozkrittya stanovit blizko 2 40 Algoritm Pike Pike ce zbidnena i urizana versiya Fish zaproponovana Rosom Andersonom tim hto zlamav Fish Vin vikoristovuye tri aditivnih generatora Napriklad A i A i 55 A i 24 mod 2 32 displaystyle A i A i 55 A i 24 mod 2 32 B i B i 57 B i 7 mod 2 32 displaystyle B i B i 57 B i 7 mod 2 32 C i C i 58 C i 19 mod 2 32 displaystyle C i C i 58 C i 19 mod 2 32 Dlya generaciyi slova potoku klyuchiv poglyante na biti perenesennya pri dodavanni Yaksho vsi tri odnakovi vsi nuli abo vsi odinici to taktuyutsya vsi tri generatora Yaksho nemaye to taktuyutsya tilki dva spivpadayuchih generatora Zberezhit biti perenesennya dlya nastupnogo razu Ostatochnim vihodom ye XOR vihodiv troh generatoriv Pike shvidshe Fish tak yak v serednomu dlya otrimannya rezultatu potribno 2 75 diyi a ne 3 Vin takozh zanadto novij shob jomu doviryati ale viglyadaye nepogano Algoritm Mush Mush ye vzayemno proridzhuvalnij generator Jogo robotu poyasniti legko Vizmemo dva aditivnih generatora A i V Yaksho bit perenesennya A vstanovleno taktuyetsya V Yaksho bit perenesennya V vstanovleno taktuyetsya A Taktuyemo A i pri perepovnenni vstanovlyuyemo bit perenesennya Taktuyemo V i pri perepovnenni vstanovlyuyemo bit perenesennya Ostatochnim vihodom ye XOR vihodiv A i V Najprostishe vikoristovuvati ti zh generatori sho i v Fish A i A i 55 A i 24 mod 2 32 displaystyle A i A i 55 A i 24 mod 2 32 B i B i 52 B i 19 mod 2 32 displaystyle B i B i 52 B i 19 mod 2 32 V serednomu dlya generaciyi odnogo vihidnogo slova potribno tri iteraciyi generatora I yaksho koeficiyenti aditivnogo generatora obrani pravilno i ye vzayemno prostimi dovzhina vihidnoyi poslidovnosti bude maksimalna PrimitkiKnut D Iskusstvo programmirovaniya tom 2 3 e izdanie 2001 g gl 3 2 2 Shnajer B Prikladnaya kriptografiya Protokoly algoritmy i ishodnye teksty na yazyke C 2002 g S 291 V A Pesoshin V M Kuznecov A S Kuznecova A R Shameeva Generatory psevdosluchajnyh posledovatelnostej nemaksimalnoj dliny na registrah sdviga Bruce Schneier 16 9 Additive Generators Applied cryptography protocols algorithms and source code in C John Wiley amp Sons Inc New York 1996 Shnajer B Prikladnaya kriptografiya Protokoly algoritmy i ishodnye teksty na yazyke C 2002 g gl 16 9 Posilannyahttp www phy ornl gov csep rn node20 html 30 sichnya 2014 u Wayback Machine Aluru S 1997 Lagged Fibonacci Random Number Generators for Distributed Memory Parallel Computers 26 bereznya 2014 u Wayback Machine JOURNAL OF PARALLEL AND DISTRIBUTED COMPUTING 45 1 12 Cya stattya maye kilka nedolikiv Bud laska dopomozhit udoskonaliti yiyi abo obgovorit ci problemi na refless