Кездейсоқ сандар материалдары: генераторлар қалай жұмыс істейді және қай жерде қателеседі

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

Неден бастау керек

Кездейсоқ сандар генераторы деген не? мақаласын оқыңыз: аппараттық, псевдокездейсоқ және криптографиялық тұрғыдан қауіпсіз генераторлар, сандардың неліктен қайталанатыны және браузердің қандай мүмкіндіктері бар екені баяндалады. Түсіндірмелердің орнына дайын сандар қажет болса, кездейсоқ сандар генераторы оларды кез келген аралықта қайталанумен немесе қайталанусыз тікелей браузеріңізде шығарып береді.

Генераторлар байқалмай қай жерде қателеседі

Кездейсоқтықтың сенімді көзіне ие болу — жұмыстың тек жартысы. Екінші жартысы — бастапқы мәндерді сіздің аралығыңызға сәйкестендіру, дәл осы жерде көптеген қолдан жасалған генераторлар қателік жібереді. Аралықтың көлемі бойынша қалдықты (модуль) алу — ең қарапайым әдіс, бірақ ол байқалмайтын ауытқуға әкеледі: егер аралықтың көлемі бастапқы мәндер кеңістігін тең бөлмесе, аралықтағы ең кіші сандар басқаларға қарағанда біршама жиірек түседі. Бұл кемшілік модульдік ауытқу (modulo bias) деп аталады. Шешімдердің бірі — қабылдамау арқылы іріктеу (rejection sampling): тең емес бөлікке түсетін мәндерді алып тастап, қайта таңдау. Біздің генератор дәл осылай жұмыс істейді, сондықтан әрбір таңдауда сіздің аралығыңыздағы әр санның түсу мүмкіндігі бірдей болады.

Дәл осы себеппен адамдар жиі қолданатын оңай жолдар жарамсыз болып табылады. Math.random() қауіпсіздікке ешқандай кепілдік бермейді, ал электрондық кестелердің RAND() және RANDBETWEEN() сияқты функциялары да осы санатқа жатады: жай араластыру үшін жарағанымен, біреу дауласуы мүмкін кез келген жағдай үшін мүлдем жарамсыз.

Сандар, тізімдер және сүйектер

Кездейсоқ сандар генераторы сіз орнатқан аралықтағы сандарды береді. Тізімнен кездейсоқ таңдау құралы сіз енгізген тізіммен (есімдер, қатысушылар, нұсқалар) жұмыс істейді, сондықтан сандарды қатарларға қолмен сәйкестендірудің қажеті жоқ. Үстел ойындары үшін сүйек лақтыру сүйектерді лақтырып, олардың қосындысын есептейді, ал екі нұсқаның бірін таңдау үшін тиын лақтыру жеткілікті. Кездейсоқтық шешім қабылдаудың орнына бірдеңені қорғауы керек болса, күшті құпия сөз генераторын пайдаланыңыз. Олардың барлығы браузеріңіздегі бірдей криптографиялық қауіпсіз көзді пайдаланады.

Құралды қолдануға дайынсыз ба?

Біздің тегін әрі қауіпсіз «Кездейсоқ сандар генераторы» құралын тікелей браузеріңізде қолданып көріңіз.

Құралды ашу