Кездейсоқ сандар генераторы

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

Таңдау үшін «Жасау» түймесін басыңыз
Параметрлер

Кездейсоқ санды алудың жылдам әрі әділ жолын іздеп жүрсіз бе? Бұл тегін онлайн кездейсоқ сандар генераторы сіз таңдаған кез келген ауқымда бір санды — немесе сандардың толық тізімін — жасайды: қарапайым 1-ден 10-ға дейінгі ауқымнан бастап миллиардтарға дейін жететін ауқымдарға дейін. Ең төменгі және ең жоғарғы мәндерді «Мин» және «Макс» өрістерінде орнатыңыз, қанша сан керек екенін «Саны» өрісінде таңдаңыз, содан кейін «Жасау» түймесін басыңыз. Екі шекара да нәтижеге кіреді, сондықтан 1-ден 10-ға дейінгі ауқым 1-ді де, 10-ды да қайтара алады.

Әр нәтиже тікелей сіздің браузеріңізде Web Crypto API (crypto.getRandomValues) арқылы жасалады — бұл операциялық жүйеңіздің негізгі кездейсоқтығынан алынған криптографиялық тұрғыдан күшті кездейсоқ мәндерді береді. Ештеңе серверге жіберілмейді, ештеңе сақталмайды, және біз сіздің сандарыңызды ешқашан көрмейміз. Жасау үдерісі лезде, құпия түрде өтеді, әрі бет жүктелгеннен кейін баяу байланыста да жұмысын жалғастыра береді.

Баптаулар адамдарға кездейсоқ сандар шынымен қажет болатын нақты жағдайларға арналған. Бірде-бір сан екі рет қайталанбауы үшін «Қайталанбайтын» опциясын қосыңыз — бұл жеребеге, лотерея стиліндегі тартылымдарға немесе адамдарды қайталанбайтын топтарға бөлуге қажетті баптау. 500 қатысушының ішінен жиырма жеңімпаз керек пе? «Мин» дегенді 1-ге, «Макс» дегенді 500-ге орнатыңыз, «Қайталанбайтын» опциясын қосыңыз, «Саны» дегенді 20-ға орнатыңыз және «Жасау» түймесін басыңыз. «Сұрыптау реті» нәтижені өсу немесе кему ретімен реттейді, ал бір түйме барлық нәтижелерді бірден көшіреді. «Шығыс форматын» «Жаңа жолдан» «Бос орынмен бөлінгенге» немесе «Үтірмен бөлінгенге» ауыстырғанда «Жиынтықтар саны» өрісі пайда болады: бір мезгілде бірнеше тәуелсіз тартылым — мысалы, жиырма тартылым үшін әрқайсысында 3 саннан жиырма жиынтық — ал «Жиынтықтар арасында қайталануға рұқсат ету» бір санның олардың бірнешеуінде пайда болу-болмауын анықтайды.

Кездейсоқтық іс жүзінде қалай жасалады? Браузеріңіз криптографиялық тұрғыдан күшті кездейсоқ мәндерді Math.random() сияқты JavaScript PRNG арқылы емес, Web Crypto API арқылы береді. «Жасау» түймесін басқанда, бет crypto.getRandomValues арқылы кездейсоқ мәндерді сұрайды және оларды сіз таңдаған ауқымда сандар жасау үшін пайдаланады. Кездейсоқтықтың негізгі көзін операциялық жүйе қамтамасыз етеді, сондықтан бетке өзінің бастапқы мәнін (seed) немесе псевдокездейсоқ тізбегін сақтаудың қажеті жоқ.

Шикі мәнді ауқымыңызға сәйкестендіру — генераторлар үнсіз қателесетін тұс, әрі бұл бөлек абзацқа лайық. Мәнді ауқым өлшеміне бөлгендегі қалдықты алу — ең оңай, бірақ ауытқушылығы бар тәсіл: 2^32 ауқым өлшеміне дәл бөлінбесе, ең төменгі сандар қалғандарына қарағанда сәл жиірек шығады. Бұл кемшілік modulo bias деп аталады, әрі ол өлшенеді, тек теориялық емес. Бұл генератор оның орнына ауқымның ең үлкен дәл еселігінен асатын кез келген мәннен бас тартады да, қайта жасайды — бұл тәсіл rejection sampling деп аталады. Бұл бірнеше қосымша әрекетке тұрады, бірақ орнына дәл кепілдік береді: «Мин» мен «Макс» арасындағы әрбір санда мүлдем бірдей ықтималдық бар, шамамен бірдей емес.

Санды нағыз кездейсоқ ететін не? Сан алдыңғы нәтижелер келесісі туралы ештеңе айтпайтын болса, жеткілікті дәрежеде кездейсоқ болып саналады — іс жүзінде мұның үш деңгейі бар. Math.random() сияқты қарапайым псевдокездейсоқ функция детерминистік алгоритмді орындайды: оның ішкі күйін білетін кез келген адам бүкіл тізбекті қайта жасай алады, бұл оны презентация слайдтарын араластыруға жарамды етеді, бірақ нәтиже болжамды болмауы керек кез келген нәрсеге жарамсыз етеді. Криптографиялық тұрғыдан қауіпсіз генератор (CSPRNG) — бұл құрал пайдаланатын деңгей — сонымен қатар алгоритм, бірақ ол жүйелік кездейсоқтықтың қауіпсіз көзін пайдаланып болжауға болмайтын мәндер жасау үшін жасалған және оның шығысын бақылау келесіде не боларын мүлдем ашпайтындай етіп құрылған. Атмосфералық шу немесе радиоактивті ыдырау сияқты көздерден алынатын физикалық кездейсоқтық осы екі деңгейден де бөлек тұрады, дегенмен ауқымнан сан жасау мәселесіне келгенде іс жүзіндегі айырмашылық жоғалады. Дәл осы себепті браузерлер Math.random()-ды жай ғана жетілдірудің орнына бөлек криптографиялық API ұсынады: бұл екеуі әртүрлі мәселелерді шешеді, ал нәтиже біреу үшін маңызды болғанда, олардың тек біреуі ғана қауіпсіз.

Кездейсоқ тізбектің адамдарға кездейсоқ болып көрінуі міндетті емес. 1 мен 10 арасында он сан жасаңыз, сонда сіз үнемі қайталануды, 7, 7, 8 сияқты дерлік жұпты немесе тек жоғары мәндерден тұратын қысқа тізбекті байқайтын боласыз — және мұның әрқайсысы мүлдем қалыпты жағдай. Нағыз кездейсоқтық болжауға келмейді, ал қысқа тізбектердің біркелкі көрінуі міндетті емес: әрбір сан алдыңғыларға тәуелсіз шығады, алдыңғы сандардың кейінгілеріне мүлдем ешқандай әсері жоқ, және ешбір санның басқасынан гөрі «кезегі келді» деуге болмайды. Керісінше екенін дәлелдейтін сезім — құмарпаздың жаңылысуы, әрі бұл адамдарды өздерін кездейсоқ сандардың нашар генераторына айналдыратын сол сезім — бізден кездейсоқ тізбек ойлап табу сұралғанда, біз қайталанулардан аулақ жүреміз және мәндерді кездейсоқтық ешқашан жасамайтындай бірқалыпты таратамыз. Күдіктене реттелген болып көрінетін нәтиже — адамның қолтаңбасы; нағыз кездейсоқтық шоғырлар жасайды.

Осы кездейсоқ сандар генераторын неліктен таңдау керек?

Кездейсоқ сандар көптеген адамдар ойлағаннан әлдеқайда көп жерде қолданылады. Мұғалімдер оқушыларды ешкімге артықшылық бермей шақырады. Стримерлер мен маркетингтік топтар нәтижеге сенуге тиіс аудитория алдында сыйлықтар мен жеребе жеңімпаздарын анықтайды. Ойыншылар жоғалған сүйекті ауыстырады немесе кім бірінші бастайтынын шешеді, ал турнирлерде бастапқы кезек тартылыммен анықталады. Зерттеушілер өз нәтижелерінің зерттеуге қатыспаған адамдарға да қатысты болуы үшін кездейсоқ таңдама таңдайды. Әзірлеушілер тестілік деректер жасайды, симуляциялар үшін бастапқы мәнді (seed) орнатады және QA кезінде идентификаторлар таңдайды. Ортақ желі — кейін түсіндіруге болатын кездейсоқ таңдау процесі: тартылым криптографиялық кездейсоқтықты пайдаланатындықтан және толығымен сіздің құрылғыңызда өтетіндіктен, біреу оған күмән келтірсе, нәтиженің қалай жасалғанын көрсете аласыз.

Бұл генератордың білуге тұрарлық бірнеше орынды шектеулері бар. «Қайталанбайтын» режимі ауқымда бар санынан көп сан жасай алмайды: 1 мен 10 арасында жиырма бірегей мән жай ғана жоқ. Тартылымдар тәуелсіз, әрі алдыңғы нәтижелер кейінгілеріне әсер етпейді, сондықтан бетті жаңарту ешбір циклді қайта бастамайды — себебі сіз болатын цикл жай ғана жоқ. Сандар криптографиялық тұрғыдан күшті болғанымен, мұндағы тартылым — әділ таңдау, болжам емес: лотереяның ресми тартылымдары өздерінің физикалық немесе сертификатталған жабдығын пайдаланады, әрі браузеріңізде есептелген ешнәрсенің олармен ешқандай байланысы жоқ. Осы шектеулер аясында кепілдік мықты болып қалады: ауқымыңыздағы әрбір санда әрбір жеке тартылымда мүлдем бірдей мүмкіндік бар.

FAQ

Кездейсоқтық криптографиялық тұрғыдан қауіпсіз бе?

Браузеріңіздің Web Crypto API (crypto.getRandomValues) пайдаланылады, ол кездейсоқтықты операциялық жүйеңіздің криптографиялық тұрғыдан қауіпсіз көзінен алады. Қарапайым псевдокездейсоқ функциялардан айырмашылығы, оның нәтижесі іс жүзінде болжауға келмейтіндей етіп жасалған, ал rejection sampling ең төменгі мәндерге артықшылық берудің орнына ауқымдағы әрбір сан үшін бірдей ықтималдықты сақтайды.

Белгілі бір ауқымда кездейсоқ санды қалай жасауға болады?

Ең кіші мүмкін мәнді «Мин» өрісіне, ал ең үлкенін «Макс» өрісіне енгізіңіз, содан кейін «Жасау» түймесін басыңыз. Екі шекара да нәтижеге кіреді, сондықтан 1-ден 10-ға дейінгі ауқым 1-ді де, 10-ды да бере алады.

Бір мезгілде бірнеше кездейсоқ сан жасай аламын ба?

Иә. «Саны» өрісін қажетті мөлшерге (1000-ге дейін) орнатыңыз, сонда генератор бүкіл тізімді бір рет басу арқылы жасайды. Содан кейін барлық нәтижелерді көшіру түймесі арқылы алмасу буферіне көшіре аласыз немесе файлға сақтай аласыз.

Бір мезгілде сандардың бірнеше жиынтығын жасай аламын ба?

Иә. «Жиынтықтар саны» өрісі пайда болу үшін «Шығыс форматын» «Жаңа жолдан» «Бос орынмен бөлінгенге» немесе «Үтірмен бөлінгенге» ауыстырыңыз. Оны қажетті тәуелсіз тартылымдар санына орнатыңыз — мысалы, жиырма тартылым үшін әрқайсысында 3 саннан жиырма жиынтық — және әртүрлі жиынтықтар арасында қайталанулардың болу-болмауын таңдаңыз.

Жасалған сандарды сұрыптай аламын ба?

Иә. Әрбір тізімді өсу немесе кему ретімен реттеу үшін «Сұрыптау реті» опциясын пайдаланыңыз, немесе сандарды жасалған ретінде қалдыру үшін оны «Жоқ» күйінде қалдырыңыз.

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

«Қайталанбайтын» ауыстырғышын қосыңыз. Ол қосылғанда, тізімдегі әрбір жасалған сан әртүрлі болады — бұл жеребеге, сыйлық ұтыстарына немесе адамдарды топтарға бөлуге өте қолайлы. Санның ауқым өлшемінен аспайтынын ескеріңіз: 1 мен 10 арасында 20 бірегей санды жасай алмайсыз.

Неге бірдей сандар үнемі қайталанып тұрады?

Себебі тәуелсіз тартылымдар қайталана береді, әрі кездейсоқтық дәл осылай көрінеді. Әрбір тартылым өзінен бұрынғы барлық тартылымдарды толығымен елемейді, сондықтан 1-ден 10-ға дейінгі ауқымда бірдей санның қатарынан екі рет шығу ықтималдығы әр уақытта 1/10 болады — бұл әдеттегідей, бұзылған емес. Егер сізге қайталанбайтын тізім керек болса, «Қайталанбайтын» опциясын қосыңыз; бұл қандай да бір қатені түзетудің орнына тартылымды әдейі шектейді.

Неге кездейсоқ тізбек кездейсоқ болып көрінбейді?

Себебі нағыз кездейсоқтық болжауға келмейді, ал қысқа тізбектердің біркелкі көрінуі міндетті емес. Адамдар кездейсоқ нәтиженің ретті таралуын күтеді, сондықтан шоғырлар, қайталанулар және 7, 7, 8 сияқты қысқа тізбектер қате болып көрінеді, дегенмен бұлар дәл кездейсоқтық жасайтын нәрсе. Адамға ретті болып көрінетін тізбек әдетте кездейсоқ болмаған.

Браузерде жасалған кездейсоқтыққа сене аламын ба?

Иә, ол осы жердегідей Web Crypto API-ден келгенде. crypto.getRandomValues операциялық жүйенің негізгі кездейсоқтығын пайдаланып, Math.random() сияқты JavaScript PRNG арқылы емес, криптографиялық тұрғыдан күшті кездейсоқ мәндерді береді. Math.random() — шынымен маңызды кез келген нәрседе сенбеу керек нәрсе: ол детерминистік және болжауға келмейтіндей жасалмаған.

Кездейсоқ сандарды болжауға немесе оларға әсер етуге бола ма?

Жоқ, мұнда болмайды. Мәндер операциялық жүйеңіздің криптографиялық тұрғыдан қауіпсіз генераторынан келеді, сондықтан алдыңғы нәтижелерді бақылау келесісі туралы ештеңе ашпайды, ал тартылым толығымен сіздің құрылғыңызда өтеді — араласуға болатын сервер жоқ және ұстап алуға болатын сұраныс жоқ. Біз де сіздің нәтижелеріңізге әсер ете алмаймыз, себебі оларды ешқашан көрмейміз.

Сыйлықты тартылымдардың немесе жеребенің жеңімпаздарын таңдауға жарамды ма?

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

Бетті жаңарту кездейсоқтықты өзгерте ме?

Жоқ, әрі бұл мүлдем қажет те емес. Әрбір тартылым операциялық жүйеден жаңа кездейсоқ мәндерді сұрайды, сондықтан «Жасау» түймесін қатарынан он рет бассаңыз да, әр басудың арасында бетті қайта жүктесеңіз де, нәтижелер тәуелсіз болады. Қайта іске қосуды қажет ететін цикл жоқ, ескіретін күй жоқ — жаңарту тек экранда көрсетілген нәтижелерді тазалайды.

Генератор тегін бе, әрі сіз менің сандарымды сақтайсыз ба?

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