Трэба выбраць пераможцу ў розыгрышы, выклікаць вучня ці вырашыць, хто будзе мыць посуд? Гэты бясплатны анлайн-інструмент робіць выпадковы выбар справядліва з любога ўстаўленага вамі спіса. Змясціце вашыя запісы ў поле «Элементы» — па адным у радку або праз коску — усталюйце патрэбны лік праз «Колькасць» і націсніце «Згенераваць». Спіс патрабуе мінімум два запісы і змяшчае да 1000, прычым кожны можа мець да 200 сімвалаў.
Кожны выбар робіцца непасрэдна ў вашым браўзеры з дапамогай Web Crypto API (crypto.getRandomValues), які забяспечвае крыптаграфічна бяспечныя выпадковыя значэнні з базавых працэсаў выпадковасці вашай аперацыйнай сістэмы. Ваш спіс ніколі не адпраўляецца на сервер, не запісваецца ў логі і не бачны нам — і тут гэта больш важна, чым на большасці іншых генератараў, таму што звычайна людзі ўстаўляюць спіс кліентаў, класны журнал або імёны калег. Кнопка «Загрузіць з файла» выконвае тое ж абяцанне: ваш браўзер самастойна чытае файл і запаўняе поле лакальна, нічога нікуды не загружаючы.
Налады створаны для тых спісаў, якія людзі маюць насамрэч. Налада «Раздзяляльнік» стаіць на «Аўтаматычна», што дазваляе самастойна адрозніваць пераносы радкоў ад косак, таму спіс, скапіяваны з табліцы, чата або дакумента, працуе без перафарматавання. Зафіксуйце яе на «Новы радок», «Коска» або «Прабел», калі вашыя даныя змешваюць фарматы — і звярніце ўвагу, што «Прабел» — гэта заўсёды свядомы выбар, а не аўтаматычны, бо такія запісы, як поўныя імёны, утрымліваюць уласныя прабелы, і іх аўтаматычнае падзяленне зламала б больш спісаў, чым выправіла. «Колькасць» вызначае, колькі запісаў трэба выцягнуць, ад 1 да 100. Разыгрываеце тры прызы сярод 200 удзельнікаў? Устаўце ўдзельнікаў, усталюйце «Колькасць» на 3 і націсніце «Згенераваць». Дзве налады дзейнічаюць толькі тады, калі колькасць складае 2 і больш, і застаюцца неактыўнымі да гэтага моманту: «Без паўтораў», якая вырашае, ці можа адзін і той жа запіс быць выцягнуты двойчы, і «Фармат выніку», якая ўстанаўлівае, як падзяляюцца выбраныя элементы — «Па адным у радку», «Праз прабел» або «Праз коску».
Шэраг кнопак унутры поля «Элементы» дазваляе рабіць рэдагаванне, якое інакш давялося б рабіць у іншым месцы. «Загрузіць з файла» бярэ спіс прама з тэкставага або CSV-файла. «Ператасаваць» мяняе парадак запісаў у полі, «Сартаваць» упарадкоўвае іх па алфавіце з натуральным парадкам лікаў (паўторны клік змяняе парадак на адваротны), а «Ачысціць» вызваляе поле. Кнопка «Уставіць прыклад» дадае кароткі ўзор спіса, каб вы маглі выпрабаваць інструмент у адзін клік, у той час як «Разгарнуць на ўвесь спіс» расхінае поле, каб паказаць доўгі спіс цалкам, а «Згарнуць» вяртае яго да зыходнага памеру. Пад вынікам кнопка «Капіяваць усё» змяшчае кожны выбраны элемент у буфер абмену, «Захаваць у файл» запісвае іх на дыск, а «Гісторыя» захоўвае вашыя апошнія 10 розыгрышаў у браўзеры, таму папярэдні вынік даступны ў адзін клік.
Як менавіта робіцца выбар? Калі вы націскаеце «Згенераваць», старонка запытвае ў браўзера выпадковыя значэнні праз crypto.getRandomValues і выкарыстоўвае іх для выбару пазіцый у вашым спісе, замест таго каб звяртацца да псеўдавыпадковай функцыі JavaScript, такой як Math.random(). Пераўтварэнне неапрацаванага 32-бітнага значэння ў пазіцыю — гэта тое месца, дзе многія інструменты ціха памыляюцца: узяцце значэння па модулю даўжыні спіса з'яўляецца відавочным падыходам, які ўтварае зрушэнне, бо калі даўжыня спіса не дзеліцца без астатку на 2^32, элементы бліжэй да пачатку спіса будуць выпадаць крыху часцей за астатнія. Гэтая загана называецца зрушэннем па модулю (modulo bias), і яна з'яўляецца вымяральнай, а не тэарэтычнай. Замест гэтага дадзены інструмент адкідае любое значэнне, якое перавышае найбольшае дакладнае кратнае даўжыні спіса, і робіць выбар зноў — метад, вядомы як выбарка з адхіленнем (rejection sampling). Гэта каштуе некалькі дадатковых спроб, але дае дакладную гарантыю замест прыблізнай. Пазіцыя ў спісе нічога не змяняе: першы і апошні запісы маюць аднолькавую імавернасць пры кожным розыгрышы.
Налада «Без паўтораў» падзяляе два цалкам розныя віды розыгрышу, і статыстыка мае назву для кожнага. Калі яна ўключана, інструмент тасуе копію вашага спіса з дапамогай алгарытму Фішэра-Ейтса (Fisher-Yates) і бярэ запісы зверху — тое ж самае, што выцягваць паперкі з капелюша, не вяртаючы іх назад, таму нікога не выбіраюць двойчы, і любая група такога памеру аднолькава імаверная. Гэта называецца выбаркай без вяртання (sampling without replacement), і менавіта гэта падыходзіць для выбару пераможцаў, каманд і чарговасці хадоў. Калі яна выключана, кожны выбар робіцца незалежна з усяго спіса, таму адзін і той жа запіс можа выпасці больш за адзін раз — гэта выбарка з вяртаннем (sampling with replacement), якая патрэбна, калі ўсе застаюцца даступнымі ў кожным раўндзе, напрыклад, пры паўторных розыгрышах або хуткім статыстычным апытанні. Ніводны з рэжымаў не з'яўляецца больш справядлівым; яны проста адказваюць на розныя пытанні.
Справядлівы розыгрыш не павінен выглядаць справядліва. Выцягніце пяць імёнаў з дзесяці, і вы рэгулярна будзеце бачыць два выбары, якія стаялі побач у зыходным спісе, або адно і тое ж імя двойчы запар, калі паўторы дазволены, і ўсё гэта цалкам нармальна. Кожны розыгрыш з'яўляецца незалежным: папярэднія выбары не маюць ніякага ўплыву на наступныя, і ніхто ніколі не становіцца тым, каму перамога ўжо «належыць». Інстынкт, які сцвярджае адваротнае, — гэта памылка гульца (gambler's fallacy), і менавіта гэты інстынкт робіць нас кепскімі ў самастойным выпадковым выбары — калі нас просяць выбраць наўздагад, мы пазбягаем першага і апошняга запісу, пазбягаем паўтарэння імя і размяркоўваем свой выбар значна больш раўнамерна, чым гэта калі-небудзь робіць выпадковасць. Вынік, які выглядае падазрона акуратным, з'яўляецца адбіткам пальца чалавека; сапраўдная выпадковасць стварае скопішчы.
Чаму варта абраць гэты інструмент выпадковага выбару?
- Выбар толькі ў браўзеры: ваш спіс чытаецца на вашай прыладзе і нікуды не адпраўляецца
- Выпадковасць Web Crypto API: крыптаграфічна бяспечна, гэта не Math.random()
- Без зрушэння па модулю: выбарка з адхіленнем захоўвае аднолькавую імавернасць кожнага запісу
- Любы фармат спіса: па адным у радку, праз коску або праз прабел, без перафарматавання
- Рэжым «Без паўтораў»: выбірайце пераможцаў або каманды так, каб ніхто не быў выбраны двойчы
- Да 1000 запісаў і да 100 выбраных элементаў за адзін розыгрыш
- Убудаваныя інструменты: загрузка з файла, тасаванне, сартаванне, ачыстка, прыклад даных
- Гісторыя і Захаваць у файл: вядзіце ўлік розыгрышу, які вам, магчыма, давядзецца абгрунтоўваць
- Неабмежавана і бясплатна: ніякай рэгістрацыі, ніякіх лімітаў на выкарыстанне, нічога на нашых серверах
Выпадковы выбар узнікае ўсюды, дзе рашэнне павінна вытрымаць магчымыя пытанні. Настаўнікі ў Беларусі выклікаюць вучняў без любімчыкаў і дзеляць клас на праектныя групы. Стрымеры і маркетолагі вызначаюць пераможцаў розыгрышаў перад аўдыторыяй, якая павінна верыць у вынік. Менеджары размяркоўваюць задачы, на якія ніхто не згаджаецца дабраахвотна, а каманды вырашаюць парадак прэзентацый або тое, хто застаецца на дзяжурства. Даследчыкі робяць выпадковую выбарку запісаў для праверкі. Сем'і спыняюць спрэчкі пра тое, што паглядзець, а галодная кампанія выбірае рэстаран. Агульная рыса — гэта выбар, які любы чалавек здолее растлумачыць пасля: розыгрыш выкарыстоўвае крыптаграфічную выпадковасць, ён цалкам адбываецца на вашай прыладзе, і «Гісторыя» захоўвае вынік, калі нехта спытае пра яго пазней.
Гэты інструмент мае некалькі сумленных абмежаванняў, якія варта ведаць. Ён не можа выцягнуць больш унікальных запісаў, чым утрымлівае ваш спіс — для трох пераможцаў патрэбны хаця б тры імёны — і ён спыняецца на 1000 запісах па 200 сімвалаў кожны, дазваляючы да 100 выбараў за адзін раз. Кнопкі «Ператасаваць» і «Сартаваць» працуюць парадкова, таму спіс праз коску, устаўлены ў адзін радок, зменіць парадак толькі тады, калі яго падзяліць па адным запісе на радок; і абедзве яны мяняюць парадак у полі, а не ў самім розыгрышы, які застаецца аднолькава справядлівым, у якім бы парадку ні стаялі вашыя элементы. Кожны запіс таксама мае аднолькавую вагу, таму для розыгрышу, дзе адно імя павінна лічыцца двойчы, гэтае імя трэба ўпісаць два разы. У межах гэтых абмежаванняў гарантыя з'яўляецца моцнай — кожны запіс у вашым спісе мае абсалютна аднолькавы шанец пры кожным розыгрышы.