Кіріспе

Псевдослучайный сан генераторы

Мерсенн Твистер – 1997 жылы Такудзи Нисимура (西村 拓士) және басқа да әзірлеушілер жасаған жалпы мақсаттағы псевдослучайный сан генераторы (PRNG). Оның атауы период ұзындығы ретінде Мерсенн санының таңдалуынан шыққан. Мерсенн Твистер ескі PRNG-ларда табылган көптеген кемшіліктерді түзету үшін арнайы құрастырылған. Мерсенн Твистер алгоритмінің ең көп қолданылатын нұсқасы Мерсенн санына негізделген. Оның стандартты іске асырылуы, MT19937, 32 биттік сөз ұзындығын қолданады. 64 биттік сөз ұзындығын пайдаланатын тағы бір іске асырылу бар (бес түрі бар), MT19937 64; ол басқа тізбек жасайды.

Бастапқылау

Мерсенн твистерін іске асыру үшін қажетті күй – әрқайсысы w биттен тұратын n мәндік массив. Массивті инициализациялау үшін w биттік тұқымдық мән тұқымдық мәнге орнатылып, содан кейін i-ден j-ға дейін келесідей орнатылады:

Алгоритмнің бірінші генерирлейтін мәні , емес , негізінде құралады. f тұрақтысы генератор үшін тағы бір параметр болып табылады, бірақ ол алгоритмнің тікелей бөлігі емес. MT19937 үшін f мәні 1812433253. MT19937 64 үшін f мәні 6364136223846793005. Оны Мацумото және Нишимура, сондай-ақ Марико Хагита мен Муцуо Сайто бірлесіп жасады. Ол eCRYPT желісінің eSTREAM жобасына ұсынылды. Негізгі сызықтық рекурренттік операциялар MT-ден кеңейтілген, ал параметрлер көптеген жіптердің рекурсияны параллель түрде есептеуіне мүмкіндік береді, сонымен қатар жад жүктемесін азайту үшін күй кеңістігін бөліседі. Мақалада MT-ге қарағанда жақсартылған тең таралу және ескі (2008 жылғы) GPU-да (Nvidia GTX260, 192 ядросы бар) 5 × 107 кездейсоқ 32 биттік бүтін сан үшін 4,7 мс өнімділік көрсетіледі. SFMT (SIMD-ге бағытталған жылдам Мерсенн твистері) – 2006 жылы ұсынылған Мерсенн твистерінің түрі, ол 128 биттік SIMD-де жұмыс істегенде жылдам болу үшін жасалған. Бұл Мерсенн твистерінен шамамен екі есе жылдам. Оның v биттік дәлдіктегі тең таралу қасиеттері MT-ге қарағанда жақсы, бірақ WELL ("Жақсы тең таратылған ұзақ кезеңді сызықтық")-ден нашар. Ол бастапқы күйден нөлдік артықтан MT-ге қарағанда жылдам қалпына келеді, бірақ WELL-ге қарағанда баяу. Ол 2607 − 1-ден 2216091 − 1-ге дейінгі әртүрлі кезеңдерді қолдайды. Intel SSE2 және PowerPC AltiVec SFMT-мен үйлесімді. Ол сондай-ақ PlayStation 3-те Cell BE-мен ойындарда қолданылады. TinyMT – 2011 жылы Сайто және Мацумото ұсынған Мерсенн твистерінің түрі. TinyMT тек 127 бит күй кеңістігін пайдаланады, бұл түпнұсқаның 2,5 КБ-ға қарағанда айтарлықтай азайту. Алайда, оның кезеңі түпнұсқадан әлдеқайда қысқа, сондықтан авторлар оны тек жад шектеулі жағдайларда ғана ұсынады.

Баламалар

Альтернативті генератор, WELL ("Well Equidistributed Long period Linear") жылдам қалпына келтіру, теңдей кездейсоқтық және шамамен бірдей жылдамдық ұсынады. Марсаглияның xorshift генераторлары мен түрлері LFSR класындағы ең жылдамдары болып табылады. 64 биттік MELG ("64 биттік Мерсендік ең үлкен кезеңді максималды тең таратылған сызықтық генераторлар") k таралу қасиеттері тұрғысынан толықтай оңтайландырылған. ACORN отбасы (1989 жылы жарияланған) – тағы бір k таратылған PRNG, ол MT-ге ұқсас есептеу жылдамдығын көрсетіп, қазіргі (2019) TestU01 критерийлерінің барлығын қанағаттандыратын жақсырақ статистикалық қасиеттерге ие; тиісті параметрлерді таңдағанда ACORN кез келген ұзақтықтағы кезеңге және дәлдікке қол жеткізе алады. PCG отбасы – заманауи ұзақ кезеңді генератор, жақсы кэш локалдығымен және қазіргі талдау әдістерімен анықтауға болатын азырақ бұрмалаушылыққа ие.