Кіріспе
RANDU – Park-Miller типіндегі сызықтық конгруенциялық псевдокездейсоқ сан генераторы (LCG), ол негізінен 1960 және 1970 жылдары қолданылған. Ол рекурренция арқылы анықталады: бастапқы тұқым санымен, ол тақ сан болуы керек. Ол [1, 231 − 1] аралығында біркелкі таратылған псевдокездейсоқ бүтін сандарды жасайды, бірақ практикалық қолданыстарда олар көбінесе (0, 1) аралығындағы псевдокездейсоқ рационалдарға түрлендіріледі: IBM-нің RANDU ең нашар ойластырылған кездейсоқ сан генераторларының бірі деп кеңінен есептеледі және Дональд Кнут оны «шын мәнінде қорқынышты» деп сипаттады. Ол 2-ден жоғары өлшемдер үшін спектральдік тесттен нашар өтеді, бұл төменде көрсетілгендей. Көбейтуші мен модуль үшін осы нақты мәндерді таңдау себебі – 32 биттік бүтін сан мөлшерімен mod 231 арифметикасы және есептеулерді аппараттық биттік операторларды қолдану арқылы жылдам жасауға болады, бірақ мәндер статистикалық сапа емес, есептеу ыңғайлылығы үшін таңдалды.
with the initial seed number, as an odd number. It generates pseudorandom integers which are uniformly distributed in the interval [1, 231 − 1], but in practical applications are often mapped into pseudorandom rationals in the interval (0, 1), by the formula:
IBM's RANDU is widely considered to be one of the most ill conceived random number generators ever designed, and was described as "truly horrible" by Donald Knuth. It fails the spectral test badly for dimensions greater than 2 as will be seen below. The reason for choosing these particular values for the multiplier and modulus had been that with a 32 bit integer word size, the arithmetic of mod 231 and calculations could be done quickly, using bitwise operators in hardware, but the values were chosen for computational convenience, not statistical quality.
Көбейтуші мен модульдің проблемалары
Кез келген сызықтық конгруенциалдық генератор, модулі 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 компиляторлары оны қолданып келді.