Патрэбны хуткі і справядлівы спосаб атрымаць выпадковы лік? Гэты бясплатны анлайн-генератар выпадковых лікаў генеруе адзін лік — або цэлы спіс лікаў — у любым дыяпазоне, які вы абярэце, ад простага дыяпазону 1–10 да дыяпазонаў, якія ахопліваюць мільярды. Задайце мінімальнае і максімальнае значэнні ў палях «Мін» і «Макс», абярыце патрэбную колькасць лікаў у полі «Колькасць» і націсніце «Згенераваць». Абедзве мяжы ўваходзяць у дыяпазон, таму дыяпазон ад 1 да 10 можа даць і 1, і 10.
Кожны вынік ствараецца непасрэдна ў вашым браўзеры з дапамогай Web Crypto API (crypto.getRandomValues) — якое атрымлівае крыптаграфічна ўстойлівыя выпадковыя значэнні з крыніцы выпадковасці, прадастаўленай аперацыйнай сістэмай. Нічога не адпраўляецца на сервер, нічога не запісваецца, і мы ніколі не бачым вашыя лікі. Генерацыя адбываецца імгненна, прыватна і працягвае працаваць на павольным злучэнні пасля таго, як старонка загрузілася.
Налады прызначаныя для тых сітуацый, у якіх людзям сапраўды патрэбныя выпадковыя лікі. Уключыце «Без паўтораў», каб ніводны лік не з'яўляўся двойчы — менавіта тое, што трэба для розыгрышаў і падзелу людзей на групы без паўтораў. Патрэбна дваццаць пераможцаў з 500 удзельнікаў? Задайце «Мін» роўным 1 і «Макс» роўным 500, уключыце «Без паўтораў», задайце «Колькасць» роўнай 20 і націсніце «Згенераваць». «Парадак сартавання» упарадкоўвае вынік па ўзрастанні або па змяншэнні, а адна кнопка капіруе ўсе вынікі. Калі вы пераключаеце «Фармат выніку» з «Новы радок» на «Праз прабел» ці «Праз коску», з'яўляецца «Колькасць набораў»: некалькі незалежных генерацый адразу — напрыклад, дваццаць набораў па 3 лікі для дваццаці раундаў розыгрышу — а «Дазволіць паўторы паміж наборамі» вызначае, ці можа адзін і той жа лік з'явіцца больш чым у адным з іх.
Як насамрэч ствараецца выпадковасць? Ваш браўзер дае крыптаграфічна ўстойлівыя выпадковыя значэнні праз Web Crypto API, а не праз JavaScript-PRNG накшталт Math.random(). Калі вы націскаеце «Згенераваць», старонка запытвае выпадковыя значэнні праз crypto.getRandomValues і выкарыстоўвае іх, каб стварыць лікі ў абраным дыяпазоне. Выпадковасць паходзіць ад крыніцы выпадковасці, прадастаўленай аперацыйнай сістэмай, таму старонцы не трэба захоўваць уласны seed ці псеўдавыпадковую паслядоўнасць.
Пераўтварэнне сырога значэння ў ваш дыяпазон — менавіта тое месца, дзе генератары ціха дапускаюць памылку, і гэта заслугоўвае асобнага абзаца. Узяць значэнне па модулі ад памеру дыяпазону — відавочны спосаб, і ён скажоны: калі дыяпазон не дзеліцца роўна на 2^32, самыя малыя лікі выпадаюць крыху часцей за астатнія. Гэтая скажонасць называецца modulo bias, і яна вымерная, а не толькі тэарэтычная. Гэты генератар замест гэтага адхіляе любое значэнне па-за найбольшым дакладным кратным дыяпазону і генеруе зноў — тэхніка, якая называецца rejection sampling. Гэта каштуе некалькі дадатковых спробаў, але дае дакладную гарантыю: кожны лік паміж «Мін» і «Макс» мае дакладна аднолькавую верагоднасць, а не толькі амаль аднолькавую.
Што робіць лік сапраўды выпадковым? Лік дастаткова выпадковы тады, калі папярэднія вынікі нічога не кажуць пра наступны — і на практыцы існуюць тры ўзроўні гэтага. Звычайная псеўдавыпадковая функцыя накшталт Math.random() выконвае дэтэрмінаваны алгарытм: той, хто ведае яе ўнутраны стан, можа ўзнавіць усю паслядоўнасць, што добра падыходзіць для перамешвання слайд-шоў, але не падыходзіць нідзе, дзе вынік не павінен быць прадказальным. Крыптаграфічна ўстойлівы генератар (CSPRNG) — узровень, які выкарыстоўвае гэты інструмент — таксама з'яўляецца алгарытмам, але ён спраектаваны так, каб выдаваць непрадказальныя значэнні з бяспечнай крыніцы сістэмнай выпадковасці, і пабудаваны так, што назіранне за яго вынікамі не павінна дазваляць прадказаць наступныя значэнні. Фізічная выпадковасць, з крыніц накшталт атмасфернага шуму ці радыеактыўнага распаду, — асобны ўзровень, хоць практычная розніца знікае, калі гаворка ідзе пра генерацыю ліку з дыяпазону. Менавіта таму браўзеры прапануюць асобны крыпта-API замест таго, каб проста паляпшаць Math.random(): гэтыя два вырашаюць розныя задачы, і толькі адзін з іх бяспечны, калі вынік мае значэнне для кагосьці.
Выпадковая паслядоўнасць не абавязана выглядаць выпадковай для людзей. Згенеруйце дзесяць лікаў ад 1 да 10, і вы будзеце рэгулярна бачыць паўтор, пару аднолькавых лікаў накшталт 7, 7, або кароткую серыю, якая ўся трапляе высока — і кожная з гэтых сітуацый абсалютна звычайная. Сапраўдная выпадковасць непрадказальная, а не раўнамерна размеркаваная: кожная генерацыя незалежная, папярэднія лікі не маюць абсалютна ніякага ўплыву на наступныя, і ніводны лік ніколі не «чакае сваёй чаргі» больш за іншы. Інстынкт, які сцвярджае адваротнае, — гэта памылка азартнага гульца, і гэта той жа інстынкт, які робіць людзей дрэннымі генератарамі лікаў саміх па сабе — калі нас просяць прыдумаць выпадковую паслядоўнасць, мы пазбягаем паўтораў і размяркоўваем значэнні значна раўнамерней, чым калі-небудзь робіць выпадковасць. Вынік, які выглядае падазрона акуратна, — гэта адбітак чалавека; сапраўдная выпадковасць стварае скопішчы.
Чаму варта абраць гэты генератар выпадковых лікаў?
- Генерацыя толькі ў браўзеры: лікі ствараюцца на вашай прыладзе і нікуды не адпраўляюцца
- Выпадковасць праз Web Crypto API: крыптаграфічна ўстойліва, а не Math.random()
- Без modulo bias: rejection sampling трымае кожны лік дыяпазону аднолькава верагодным
- Любы дыяпазон: ад 1 да 10 да значэнняў, якія ахопліваюць мільярды, абедзве мяжы ўваходзяць у дыяпазон
- Рэжым «Без паўтораў»: атрымайце спіс без паўтораў для розыгрышаў і падзелу на групы
- Некалькі набораў: некалькі незалежных розыгрышаў адным клікам
- Сартаванне і фарматы выніку: па ўзрастанні ці па змяншэнні, новы радок, прабелы ці коскі
- Гісторыя і захаванне: захоўвайце вынік розыгрышу, які можа спатрэбіцца паказаць або задакументаваць пазней
- Без абмежаванняў і бясплатна: без рэгістрацыі, без ліміту выкарыстання, нічога не захоўваецца на нашых серверах
Выпадковыя лікі сустракаюцца ў значна большай колькасці месцаў, чым думае большасць людзей. Настаўнікі выклікаюць вучняў, не аддаючы нікому перавагі. Стрымеры і маркетолагі праводзяць розыгрышы падарункаў і прызоў перад аўдыторыяй, якая мусіць давяраць выніку. Гульцы замяняюць страчаны кубік ці вызначаюць, хто пачынае, а на турнірах жэрабя вызначае стартавы парадак. Даследчыкі абіраюць выпадковую выбарку, каб іх высновы можна было пашырыць за межы тых, хто ўдзельнічаў. Распрацоўшчыкі генеруюць тэставыя даныя, задаюць seed для сімуляцый і абіраюць ідэнтыфікатары падчас QA. Агульная рыса — гэта працэс выпадковага адбору, які можна растлумачыць пасля: паколькі генерацыя выкарыстоўвае крыптаграфічную выпадковасць і адбываецца цалкам на вашай прыладзе, вы можаце паказаць, як з'явіўся вынік, калі хтосьці паставіць яго пад сумнеў.
Гэты генератар мае некалькі абмежаванняў, пра якія варта ведаць. Рэжым «Без паўтораў» не можа згенераваць больш лікаў, чым змяшчае дыяпазон: дваццаць унікальных значэнняў паміж 1 і 10 проста не існуе. Генерацыі незалежныя, і папярэднія вынікі не ўплываюць на наступныя, таму перазагрузка старонкі не скідае ніякі цыкл — няма ніякага цыклу, у якім можна было б знаходзіцца. І хоць лікі крыптаграфічна ўстойлівыя, генерацыя тут — гэта справядлівы выбар, а не прадказанне: афіцыйныя тыражы латарэі выкарыстоўваюць уласнае фізічнае або сертыфікаванае абсталяванне, і тое, што вылічаецца ў вашым браўзеры, не мае з імі ніякага дачынення. У межах гэтых абмежаванняў кожны лік у вашым дыяпазоне мае аднолькавую верагоднасць пры кожнай генерацыі.