Можна створити таку послідовність чисел, властивості якої будуть схожі на властивості послідовності випадкових чисел. Такі послідовності називаються псевдовипадковими.
Вперше запропонував їх використовувати Джон фон Нейман у 1946 р. Його метод полягав в наступному: n-розрядне число підносилось до квадрата і з нього вибиралися середні n цифр. Метод був дуже недосконалий, послідовності майже завжди вироджувалися в нуль або зациклювалися з коротким періодом. Пізніше було запропоновано багато різних алгоритмів отримання псевдовипадкових чисел.
В основі програмних генераторів як правило лежать рекурентні формули. Як правило, вони генерують цілі числа рівномірно розподілені на відрізку від 0, до деякого максимального m. Щоб отримати числа з рухомою комою, рівномірно розподілені на [0,1), кожен отриманий результат ділять на m.
Лінійна змішана форма
Ця формула має багато часткових випадків:
Мультиплікативний конгруентний метод
Цей розділ потребує доповнення. (квітень 2010) |
Змішаний конгруентний метод
Цей розділ потребує доповнення. (квітень 2010) |
Квадратичний конгруентний метод
Цей розділ потребує доповнення. (квітень 2010) |
Огляд методів
Лінійний конгруентний метод
Запропонований Д. Х. Лемером. Основна обчислювальна формула:
Алгоритм зациклюється з періодом, що не перевищує деякого m. Коефіцієнти а, m і x(0) можуть приймати довільні цілі значення, за винятком 0. Параметр с може бути також і 0, але в цьому випадку скорочується період. Число ітерацій m звичайно вибирається рівним максимальному значенню типу, що робить непотрібною операцію ділення, яка автоматично виконається при переповненні. Число а можна взяти рівним, наприклад, 1664525, с — рівним 1013904223. Такий метод часто реалізують в сучасних системах програмування, хоча він майже непридатний у галузі статистики чи криптографії, де вимоги до «випадковості» значно вищі.
«Mother-of-All» random number generator
Запропонований Джорджем Марсалією (Marsaglia), професором університету Флориди. Обчислювальна формула:
Цей алгоритм є узагальненням попереднього і позбавлений його головного недоліку — короткого періоду. Його період — .
Випадкове число належатиме проміжку [0, 1). Початкові значення можна задавати довільні. Алгоритм може бути застосований в прикладних науках, але він має нижчу швидкість.
Вихор Мерсенна
Вихор Мерсенна запропонований у 1997 Макуто Матсумото і Такеджі Нушиміро. Основна ідея полягає в тому, що до початкової ітерації, яка ініціює процедуру, застосовується серія бітових операцій. Після їх виконання отримують нову послідовність, перший член якої вважається псевдовипадковим числом. Цей алгоритм має величезний період: ітерації (це більше ніж ).
Алгоритм дуже швидкий через відсутність множень, але не має достатньої випадковості. Тому галузь застосування алгоритму дещо обмежена.
Генератори типу «Xorshift»
Одні з найновіших генераторів від Джорджа Марсалії. Знову розглядається деяка початкова послідовність, до якої застосовуються операції та побітові зсуви. Ці операції полягають в наступному:
Замість shl можна використовувати також shr, та еквівалентне множення.
Алгоритм має період та проходить тести Diehard.
Підсумкове випадкове число може бути одержано за допомогою підсумовування окремих членів послідовності, або застосування до них операції xor. В наш час[] це один з найбільш вживаних алгоритмів; послідовність, що генерується, достатньо випадкова, періоди — від (залежно від реалізації), відсутність операцій множення позитивно позначається на швидкості.
Інші генератори
Інтерес можуть представляти комбінації вже представлених методів[]. Деякі з них реалізовані у відповідних програмних середовищах у вигляді функцій rand(), random().
Randomize
Часто для створення унікальної послідовності псевдовипадкових чисел початковий її член ініціалізують наприклад остачею від ділення поточного часу в мілісекундах на певне число. Зазвичай це робить функція randomize(), хоча можна задати початкове число послідовності і вручну.
Див. також
Примітки
- . Архів оригіналу за 21 вересня 2011. Процитовано 17 грудня 2010.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title ()
Це незавершена стаття з криптографії. Ви можете проєкту, виправивши або дописавши її. |
Ця стаття потребує додаткових для поліпшення її . (грудень 2018) |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Mozhna stvoriti taku poslidovnist chisel vlastivosti yakoyi budut shozhi na vlastivosti poslidovnosti vipadkovih chisel Taki poslidovnosti nazivayutsya psevdovipadkovimi Vpershe zaproponuvav yih vikoristovuvati Dzhon fon Nejman u 1946 r Jogo metod polyagav v nastupnomu n rozryadne chislo pidnosilos do kvadrata i z nogo vibiralisya seredni n cifr Metod buv duzhe nedoskonalij poslidovnosti majzhe zavzhdi virodzhuvalisya v nul abo zaciklyuvalisya z korotkim periodom Piznishe bulo zaproponovano bagato riznih algoritmiv otrimannya psevdovipadkovih chisel V osnovi programnih generatoriv yak pravilo lezhat rekurentni formuli Yak pravilo voni generuyut cili chisla rivnomirno rozpodileni na vidrizku vid 0 do deyakogo maksimalnogo m Shob otrimati chisla z ruhomoyu komoyu rivnomirno rozpodileni na 0 1 kozhen otrimanij rezultat dilyat na m Linijna zmishana formaxi a0 j 1lajxi j modm displaystyle x i left a 0 sum j 1 l a j x i j right mod m Cya formula maye bagato chastkovih vipadkiv Multiplikativnij kongruentnij metod xi a1xi 1 modm displaystyle x i a 1 x i 1 mod m Cej rozdil potrebuye dopovnennya kviten 2010 Zmishanij kongruentnij metod xi 1 axi c modm displaystyle x i 1 ax i c mod m Cej rozdil potrebuye dopovnennya kviten 2010 Kvadratichnij kongruentnij metod Cej rozdil potrebuye dopovnennya kviten 2010 Oglyad metodivLinijnij kongruentnij metod Dokladnishe Linijnij kongruentnij metod Zaproponovanij D H Lemerom Osnovna obchislyuvalna formula xn 1 axn c modm displaystyle x n 1 ax n c mod m Algoritm zaciklyuyetsya z periodom sho ne perevishuye deyakogo m Koeficiyenti a m i x 0 mozhut prijmati dovilni cili znachennya za vinyatkom 0 Parametr s mozhe buti takozh i 0 ale v comu vipadku skorochuyetsya period Chislo iteracij m zvichajno vibirayetsya rivnim maksimalnomu znachennyu tipu sho robit nepotribnoyu operaciyu dilennya yaka avtomatichno vikonayetsya pri perepovnenni Chislo a mozhna vzyati rivnim napriklad 1664525 s rivnim 1013904223 Takij metod chasto realizuyut v suchasnih sistemah programuvannya hocha vin majzhe nepridatnij u galuzi statistiki chi kriptografiyi de vimogi do vipadkovosti znachno vishi Mother of All random number generator Zaproponovanij Dzhordzhem Marsaliyeyu Marsaglia profesorom universitetu Floridi Obchislyuvalna formula S 21111111111xn 4 1429xn 3 1776xn 2 5115xn 1 cxn S232C S232 displaystyle begin cases S 21111111111x n 4 1429x n 3 1776x n 2 5115x n 1 c x n frac S 2 32 C left frac S 2 32 right end cases Cej algoritm ye uzagalnennyam poperednogo i pozbavlenij jogo golovnogo nedoliku korotkogo periodu Jogo period 2250 displaystyle 2 250 Vipadkove chislo xi displaystyle x i nalezhatime promizhku 0 1 Pochatkovi znachennya mozhna zadavati dovilni Algoritm mozhe buti zastosovanij v prikladnih naukah ale vin maye nizhchu shvidkist Vihor Mersenna Dokladnishe Vihor Mersenna Vihor Mersenna zaproponovanij u 1997 Makuto Matsumoto i Takedzhi Nushimiro Osnovna ideya polyagaye v tomu sho do pochatkovoyi iteraciyi yaka iniciyuye proceduru zastosovuyetsya seriya bitovih operacij Pislya yih vikonannya otrimuyut novu poslidovnist pershij chlen yakoyi vvazhayetsya psevdovipadkovim chislom Cej algoritm maye velicheznij period 219937 1 displaystyle 2 19937 1 iteraciyi ce bilshe nizh 43 106000 displaystyle 43 times 10 6000 Algoritm duzhe shvidkij cherez vidsutnist mnozhen ale ne maye dostatnoyi vipadkovosti Tomu galuz zastosuvannya algoritmu desho obmezhena Generatori tipu Xorshift Odni z najnovishih generatoriv vid Dzhordzha Marsaliyi Znovu rozglyadayetsya deyaka pochatkova poslidovnist do yakoyi zastosovuyutsya operaciyi ta pobitovi zsuvi Ci operaciyi polyagayut v nastupnomu xn xn 1 xor xn 1 shl a displaystyle x n x n 1 mbox xor x n 1 mbox shl a Zamist shl mozhna vikoristovuvati takozh shr ta ekvivalentne mnozhennya Algoritm maye period 2128 1 displaystyle 2 128 1 ta prohodit testi Diehard Pidsumkove vipadkove chislo mozhe buti oderzhano za dopomogoyu pidsumovuvannya okremih chleniv poslidovnosti abo zastosuvannya do nih operaciyi xor V nash chas koli ce odin z najbilsh vzhivanih algoritmiv poslidovnist sho generuyetsya dostatno vipadkova periodi vid zalezhno vid realizaciyi vidsutnist operacij mnozhennya pozitivno poznachayetsya na shvidkosti Inshi generatori Interes mozhut predstavlyati kombinaciyi vzhe predstavlenih metodiv dzherelo Deyaki z nih realizovani u vidpovidnih programnih seredovishah u viglyadi funkcij rand random RandomizeChasto dlya stvorennya unikalnoyi poslidovnosti psevdovipadkovih chisel pochatkovij yiyi chlen inicializuyut napriklad ostacheyu vid dilennya potochnogo chasu v milisekundah na pevne chislo Zazvichaj ce robit funkciya randomize hocha mozhna zadati pochatkove chislo poslidovnosti i vruchnu Div takozhVipadkove proste chislo Rivnomirno rozpodilena poslidovnistPrimitki Arhiv originalu za 21 veresnya 2011 Procitovano 17 grudnya 2010 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya Ce nezavershena stattya z kriptografiyi Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi Cya stattya potrebuye dodatkovih posilan na dzherela dlya polipshennya yiyi perevirnosti Bud laska dopomozhit udoskonaliti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Zvernitsya na storinku obgovorennya za poyasnennyami ta dopomozhit vipraviti nedoliki Material bez dzherel mozhe buti piddano sumnivu ta vilucheno gruden 2018