Неден бастау керек
Кездейсоқ сандар генераторы деген не? мақаласын оқыңыз: аппараттық, псевдокездейсоқ және криптографиялық тұрғыдан қауіпсіз генераторлар, сандардың неліктен қайталанатыны және браузердің қандай мүмкіндіктері бар екені баяндалады. Түсіндірмелердің орнына дайын сандар қажет болса, кездейсоқ сандар генераторы оларды кез келген аралықта қайталанумен немесе қайталанусыз тікелей браузеріңізде шығарып береді.
Генераторлар байқалмай қай жерде қателеседі
Кездейсоқтықтың сенімді көзіне ие болу — жұмыстың тек жартысы. Екінші жартысы — бастапқы мәндерді сіздің аралығыңызға сәйкестендіру, дәл осы жерде көптеген қолдан жасалған генераторлар қателік жібереді. Аралықтың көлемі бойынша қалдықты (модуль) алу — ең қарапайым әдіс, бірақ ол байқалмайтын ауытқуға әкеледі: егер аралықтың көлемі бастапқы мәндер кеңістігін тең бөлмесе, аралықтағы ең кіші сандар басқаларға қарағанда біршама жиірек түседі. Бұл кемшілік модульдік ауытқу (modulo bias) деп аталады. Шешімдердің бірі — қабылдамау арқылы іріктеу (rejection sampling): тең емес бөлікке түсетін мәндерді алып тастап, қайта таңдау. Біздің генератор дәл осылай жұмыс істейді, сондықтан әрбір таңдауда сіздің аралығыңыздағы әр санның түсу мүмкіндігі бірдей болады.
Дәл осы себеппен адамдар жиі қолданатын оңай жолдар жарамсыз болып табылады. Math.random() қауіпсіздікке ешқандай кепілдік бермейді, ал электрондық кестелердің RAND() және RANDBETWEEN() сияқты функциялары да осы санатқа жатады: жай араластыру үшін жарағанымен, біреу дауласуы мүмкін кез келген жағдай үшін мүлдем жарамсыз.
Сандар, тізімдер және сүйектер
Кездейсоқ сандар генераторы сіз орнатқан аралықтағы сандарды береді. Тізімнен кездейсоқ таңдау құралы сіз енгізген тізіммен (есімдер, қатысушылар, нұсқалар) жұмыс істейді, сондықтан сандарды қатарларға қолмен сәйкестендірудің қажеті жоқ. Үстел ойындары үшін сүйек лақтыру сүйектерді лақтырып, олардың қосындысын есептейді, ал екі нұсқаның бірін таңдау үшін тиын лақтыру жеткілікті. Кездейсоқтық шешім қабылдаудың орнына бірдеңені қорғауы керек болса, күшті құпия сөз генераторын пайдаланыңыз. Олардың барлығы браузеріңіздегі бірдей криптографиялық қауіпсіз көзді пайдаланады.