Кіріспе

RANDU – Park-Miller типіндегі сызықтық конгруенциялық псевдокездейсоқ сан генераторы (LCG), ол негізінен 1960 және 1970 жылдары қолданылған. Ол рекурренция арқылы анықталады: бастапқы тұқым санымен, ол тақ сан болуы керек. Ол [1, 231 − 1] аралығында біркелкі таратылған псевдокездейсоқ бүтін сандарды жасайды, бірақ практикалық қолданыстарда олар көбінесе (0, 1) аралығындағы псевдокездейсоқ рационалдарға түрлендіріледі: IBM-нің RANDU ең нашар ойластырылған кездейсоқ сан генераторларының бірі деп кеңінен есептеледі және Дональд Кнут оны «шын мәнінде қорқынышты» деп сипаттады. Ол 2-ден жоғары өлшемдер үшін спектральдік тесттен нашар өтеді, бұл төменде көрсетілгендей. Көбейтуші мен модуль үшін осы нақты мәндерді таңдау себебі – 32 биттік бүтін сан мөлшерімен mod 231 арифметикасы және есептеулерді аппараттық биттік операторларды қолдану арқылы жылдам жасауға болады, бірақ мәндер статистикалық сапа емес, есептеу ыңғайлылығы үшін таңдалды.

Көбейтуші мен модульдің проблемалары

Кез келген сызықтық конгруенциалдық генератор, модулі m болатын және n өлшемді кеңістікте нүктелерді жасау үшін қолданылатын, нүктелер ең көп дегенде параллель гипержазықтықтарда орналасады. Бұл төмен модульді LCG-лердің жоғары өлшемді Монте-Карло симуляциясына қолайсыз екенін көрсетеді. m = 2^31 және n = 3 болғанда, LCG-де теориялық максимум 2344 жазықтыққа дейін болуы мүмкін. Сол Марсалья мақаласында гипержазықтықтардың барлық коэффициенттерінің абсолюттік мәндерінің қосындысы стандартты түрдегі ең тығыз жоғарғы шек екені дәлелденген. Яғни, егер гипержазықтықтар Ax1 + Bx2 + Cx3 = 0, 1, 2 және т.б. сияқты бүтін сан түрінде болса, онда жазықтықтардың максималды саны |A| + |B| + |C| болады. Бұл бұрыс мінез-құлық 1963 жылы 36 биттік компьютерде анықталған және 32 биттік IBM System/360 жүйесінде мұқият қайта іске асырылған. 1990-шы жылдардың басында кеңінен жойылған деп есептелді, бірақ 1999 жылға дейін FORTRAN компиляторлары оны қолданып келді.