Кіріспе

Кездейсоқ сандар генераторлары физика, инженерия, математикалық компьютерлік зерттеулер (мысалы, Монте-Карло симуляциялары), криптография және құмар ойындары (ойын серверлерінде) сияқты көптеген техникалық қолданыстарда маңызды рөл атқарады. Бұл тізімге сапасы мен нақты қолданылу жағдайына сәйкестігіне қарамастан, көптеген әртүрлі типтер кіреді.

Псевдосумалық сандар генераторлары (PRNG)

Келесі алгоритмдер псевдокездейі сан генераторлары болып табылады. GeneratorDateБірінші қолданушыларReferencesNoteОрталық квадрат әдісі1946J. фон Нейман Түпнұсқалық түрі нашар сапалы және тек тарихи қызығушылық тудырады. Лемер генераторы1951D. H. Lehmer Ең ерте және ең ықпалды дизайннің бірі. Сызықтық конгруенциялық генератор (LCG)1958W. E. Thomson; A. Rotenberg Лемер генераторының жалпылауы және тарихи тұрғыдан ең ықпалды және зерттелген генератор. Лагг Фибоначчи генераторы (LFG)1958G. J. Mitchell және D. P. MooreСызықтық кері байланыс тізбегі (LFSR)1965R. C. Tausworthe Өте ықпалды дизайн. Сондай-ақ, Таусворт генераторлары деп аталады. Вихманн-Хилл генераторы1982B. A. Wichmann және D. I. Hill 16 биттік процессорларға арналған үш кішкентай LCG-нің комбинациясы. Көптеген бағдарламаларда кеңінен қолданылады, мысалы, Excel 2003 және одан кейінгі нұсқаларында Excel RAND функциясы үшін қолданылады және ол Python тілінде 2.2 нұсқасына дейін әдепкі генератор болды. 30 ережесі1983S. Wolfram Ұяшық автоматтарға негізделген. Инверсиялық конгруенциялық генератор (ICG)1986J. Eichenauer және J. LehnBlum Blum Shub1986M. Blum, L. Blum және M. ShubBlum Blum Shub – криптографиялық тұрғыдан қауіпсіз деп саналатын PRNG алгоритмі. Оның негізі алғашқы сандарға негізделген. Парк-Миллер генераторы1988S. K. Park және K. W. Miller Лемер генераторының нақты іске асырылуы, кеңінен қолданылады, өйткені ол C++-қа C++11 нұсқасынан бастап minstd_rand0 функциясы ретінде қосылған. ACORN генераторы1989 (ашылған 1984) R. S. Wikramaratna Аддитивті конгруенциялық кездейі сан генераторы. Оңай іске асыруға болады, жылдам, бірақ кеңінен танымал емес. Тиісті инициализациямен, қазіргі барлық эмпирикалық тесттерден өтеді және формалды түрде конвергенциясы дәлелденген. Кез келген кезеңге оңай кеңейтілуге болады және жоғары өлшемдерде және жоғары дәлдікпен статистикалық өнімділікті жақсартады. MIXMAX генераторы1991G. K. Savvidy және N. G. Ter Arutyunyan Savvidy Бұл матрицалық сызықтық конгруенциялық генераторлар класының мүшесі, LCG-нің жалпылауы. MIXMAX генераторлар отбасының негізі эргодикалық теория мен классикалық механиканың нәтижелеріне негізделген. Қосумен тасымалдау (AWC)1991G. Marsaglia және A. Zaman Лагг Фибоначчи генераторларының модификациясы. Қарыз алумен шегеру (SWB)1991G. Marsaglia және A. Zaman Бөлшектер физикасының симуляциялары үшін кеңінен қолданылады. Максималды кезеңді өзара байланыстар1992R. A. J. Matthews Сандар теориясының тамырлары бар әдіс, бірақ практикалық қолданыста ешқашан қолданылмаған. KISS1993G. Marsaglia Комбинациялық генератордың прототиптік мысалы. Көбейтумен тасымалдау (MWC)1994G. Marsaglia; C. Koç Толықтырылған көбейтумен көбейту (CMWC)1997R. Couture және P. L’EcuyerМерсенн Твистері (MT)1998M. Matsumoto және T. Nishimura LFSR-мен тығыз байланысты. MT19937 іске асырылуында, бәлкім, ең көп қолданылатын қазіргі заманғы PRNG. R және Python тілінде 2.3 нұсқасынан бастап әдепкі генератор. Xorshift2003G. Marsaglia Бұл LFSR генераторларының өте жылдам түрі. Марсалья сондай-ақ, жақсарту ретінде xorwow генераторын ұсынды, онда xorshift генераторының шығысы Вейль тізбегімен қосылады. xorwow генераторы – графикалық өңдеу бірліктері үшін nVidia CUDA қолданбалы бағдарламалау интерфейсінің CURAND кітапханасындағы әдепкі генератор. Жақсы тең үлестірілген ұзақ кезеңді сызықтық (WELL)2006F. Panneton, P. L'Ecuyer және M. Matsumoto Мерсенн Твистерімен тығыз байланысты LFSR, оның кейбір кемшіліктерін жоюға бағытталған. Кішкентай криптографиялық емес PRNG (JSF)2007Bob JenkinsAdvanced Randomization System (ARS)2011J. Salmon, M. Moraes, R. Dror және D. Shaw AES блок шифрының оңайлатылған нұсқасы, бұл AES NI-ді қолдайтын жүйелерде өте жылдам орындалуға мүмкіндік береді. Threefry2011J. Salmon, M. Moraes, R. Dror және D. Shaw Шеңберлі емес псевдокездейі сан генераторлары, шексіз сөздер техникасына негізделген. SplitMix2014G. L. Steele, D. Lea және C. H. Flood MurmurHash3 соңғы араластыру функциясының негізінде. Java Development Kit 8 және одан жоғары нұсқаларына қосылған. Пермутацияланған конгруенциялық генератор (PCG)2014M. E. O'Neill LCG-нің модификациясы. Кездейі циклды бит генераторы (RCB)2016R. CookmanRCB – бұл Мерсенн Твистерінің кейбір кемшіліктерін жоюға және ауысу/модуль генераторларының қысқа кезеңдері/бит ұзындығы шектеулерін жеңуге арналған бит үлгісінің генераторы. Ортаңғы квадратты Вейль тізбегі RNG (сонымен қатар ортаңғы квадратты әдіс қараңыз)2017B. Widynski Джон фон Нейманның бастапқы ортаңғы квадраттық әдісінің өзгеруі, бұл генератор барлық статистикалық тесттерден өте алатын ең жылдам RNG болуы мүмкін. Xoroshiro128+2018D. Blackman, S. Vigna Марсальяның Xorshift генераторларының модификациясы, қазіргі 64 биттік процессорлардағы ең жылдам генераторлардың бірі. Қатысты генераторларға xoroshiro128**, xoshiro256+ және xoshiro256** кіреді. 64 биттік MELG (MELG 64)2018S. Harase, T. Kimoto Мерсенн жай кезеңімен 64 биттік максималды тең үлестірілген F2 сызықтық генераторларының іске асырылуы. Squares RNG2020B. Widynski Ортаңғы квадратты Вейль тізбегі RNG-нің санамалы нұсқасы. Philox сияқты дизайнға ие, бірақ айтарлықтай жылдам.