Выпадковы выбар

Устаўце любы спіс — імёны, задачы або ідэі — і дазвольце інструменту зрабіць выпадковы выбар. Кожны розыгрыш праходзіць лакальна ў вашым браўзеры, таму ваш спіс ніколі не пакідае вашу прыладу.

Націсніце «Згенераваць» для выбару
Раздзяляльнік вызначаецца аўтаматычна, але вы можаце выбраць яго ніжэй.
Дадатковыя налады

Трэба выбраць пераможцу ў розыгрышы, выклікаць вучня ці вырашыць, хто будзе мыць посуд? Гэты бясплатны анлайн-інструмент робіць выпадковы выбар справядліва з любога ўстаўленага вамі спіса. Змясціце вашыя запісы ў поле «Элементы» — па адным у радку або праз коску — усталюйце патрэбны лік праз «Колькасць» і націсніце «Згенераваць». Спіс патрабуе мінімум два запісы і змяшчае да 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), і менавіта гэты інстынкт робіць нас кепскімі ў самастойным выпадковым выбары — калі нас просяць выбраць наўздагад, мы пазбягаем першага і апошняга запісу, пазбягаем паўтарэння імя і размяркоўваем свой выбар значна больш раўнамерна, чым гэта калі-небудзь робіць выпадковасць. Вынік, які выглядае падазрона акуратным, з'яўляецца адбіткам пальца чалавека; сапраўдная выпадковасць стварае скопішчы.

Чаму варта абраць гэты інструмент выпадковага выбару?

Выпадковы выбар узнікае ўсюды, дзе рашэнне павінна вытрымаць магчымыя пытанні. Настаўнікі ў Беларусі выклікаюць вучняў без любімчыкаў і дзеляць клас на праектныя групы. Стрымеры і маркетолагі вызначаюць пераможцаў розыгрышаў перад аўдыторыяй, якая павінна верыць у вынік. Менеджары размяркоўваюць задачы, на якія ніхто не згаджаецца дабраахвотна, а каманды вырашаюць парадак прэзентацый або тое, хто застаецца на дзяжурства. Даследчыкі робяць выпадковую выбарку запісаў для праверкі. Сем'і спыняюць спрэчкі пра тое, што паглядзець, а галодная кампанія выбірае рэстаран. Агульная рыса — гэта выбар, які любы чалавек здолее растлумачыць пасля: розыгрыш выкарыстоўвае крыптаграфічную выпадковасць, ён цалкам адбываецца на вашай прыладзе, і «Гісторыя» захоўвае вынік, калі нехта спытае пра яго пазней.

Гэты інструмент мае некалькі сумленных абмежаванняў, якія варта ведаць. Ён не можа выцягнуць больш унікальных запісаў, чым утрымлівае ваш спіс — для трох пераможцаў патрэбны хаця б тры імёны — і ён спыняецца на 1000 запісах па 200 сімвалаў кожны, дазваляючы да 100 выбараў за адзін раз. Кнопкі «Ператасаваць» і «Сартаваць» працуюць парадкова, таму спіс праз коску, устаўлены ў адзін радок, зменіць парадак толькі тады, калі яго падзяліць па адным запісе на радок; і абедзве яны мяняюць парадак у полі, а не ў самім розыгрышы, які застаецца аднолькава справядлівым, у якім бы парадку ні стаялі вашыя элементы. Кожны запіс таксама мае аднолькавую вагу, таму для розыгрышу, дзе адно імя павінна лічыцца двойчы, гэтае імя трэба ўпісаць два разы. У межах гэтых абмежаванняў гарантыя з'яўляецца моцнай — кожны запіс у вашым спісе мае абсалютна аднолькавы шанец пры кожным розыгрышы.

FAQ

Як выбраць выпадковае імя са спіса?

Устаўце імёны ў поле «Элементы» — па адным у радку, або праз коску ці прабел — пакіньце поле «Колькасць» на 1 і націсніце «Згенераваць». Адно імя будзе выцягнута імгненна. Для выбару адразу некалькіх імёнаў павялічце поле «Колькасць» да патрэбнага вам ліку.

Ці сапраўды гэты выбар справядлівы?

Так. Кожны выбар выкарыстоўвае Web Crypto API вашага браўзера (crypto.getRandomValues) разам з выбаркай з адхіленнем (rejection sampling), што ўхіляе зрушэнне па модулю, якое з'явілася б пры больш простай рэалізацыі. Кожны запіс мае дакладна аднолькавую імавернасць незалежна ад яго пазіцыі ў спісе, а пры выцягванні некалькіх унікальных запісаў выкарыстоўваецца тасаванне Фішэра-Ейтса, таму любая група такога памеру таксама з'яўляецца аднолькава імавернай.

Ці загружаецца мой спіс на ваш сервер?

Не. Увесь розыгрыш цалкам выконваецца лакальна ў вашым браўзеры: спіс, вынікі і гісторыя ніколі не пакідаюць вашу прыладу, таму імёны, электронныя адрасы або любы прыватны спіс можна бяспечна ўстаўляць. Кнопка «Загрузіць з файла» таксама працуе лакальна — ваш браўзер сам чытае файл, і нічога нікуды не загружаецца.

Ці магу я ўставіць спіс праз коску або прабел замест аднаго элемента ў радку?

Так. Налада «Раздзяляльнік» устаноўлена на «Аўтаматычна», што дазваляе самастойна адрозніваць пераносы радкоў і коскі, таму спіс, скапіяваны з табліцы, паведамлення ў чаце або дакумента, будзе працаваць адразу. Для спіса праз прабел патрабуецца адзін дадатковы крок — устанавіць «Раздзяляльнік» на «Прабел» — паколькі такія запісы, як поўныя імёны, утрымліваюць прабелы і ніколі не падзяляюцца па іх аўтаматычна. Зафіксуйце наладу «Раздзяляльнік» на «Новы радок» або «Коска», калі вашыя даныя змешваюць фарматы.

Што робіць перамыкач «Без паўтораў»?

Калі налада «Без паўтораў» уключана, кожны выцягнуты запіс з'яўляецца ўнікальным — як выцягванне паперак з капелюша без іх вяртання назад, што ідэальна падыходзіць для выбару пераможцаў або каманд. Калі яна выключана, адзін і той жа запіс можа быць выбраны больш за адзін раз, што статыстыкі называюць выбаркай з вяртаннем.

Чаму элементы кіравання «Без паўтораў» і «Фармат выніку» неактыўныя?

Таму што абедзве налады дзейнічаюць толькі тады, калі вы выцягваеце больш за адзін запіс, пра што кажа падказка побач з імі: «Дзейнічае толькі, калі колькасць большая за 1.» Павялічце поле «Колькасць» да 2 або больш, і абедзве стануць даступнымі; пры колькасці 1 няма чаго дубляваць і няма чаго падзяляць.

Што робіць налада «Фармат выніку»?

Яна вызначае, як паказваюцца і капіююцца адразу некалькі выбараў: «Па адным у радку», «Праз прабел» для хуткага паведамлення ў чаце, або «Праз коску» для ўстаўкі ў табліцу ці скрыпт. Яна становіцца даступнай, калі «Колькасць» роўная 2 або больш.

Што робяць кнопкі «Ператасаваць» і «Сартаваць»?

Кнопка «Ператасаваць» мяняе парадак запісаў унутры поля «Элементы», а «Сартаваць» упарадкоўвае іх па алфавіце з натуральным парадкам лікаў — паўторны клік змяняе парадак на адваротны. Абедзве кнопкі мяняюць тое, як напісаны ваш спіс, а не тое, як працуе розыгрыш: выбар застаецца аднолькава справядлівым, у якім бы парадку ні стаялі запісы.

Колькі элементаў можа ўтрымліваць спіс, і колькі я магу выбраць за адзін раз?

Спіс змяшчае ад 2 да 1000 запісаў, кожны да 200 сімвалаў, а адзін розыгрыш выдае да 100 выбараў. Пустыя радкі і прабелы па краях ігнаруюцца, таму спіс, устаўлены з табліцы або дакумента, працуе ў зыходным выглядзе.

Ці падыходзіць гэта для выбару пераможцаў у розыгрышах падарункаў або прызоў?

Так, і гэта адно з самых распаўсюджаных прымяненняў. Устаўце імёны ўдзельнікаў, усталюйце поле «Колькасць» на лік прызоў, пакіньце наладу «Без паўтораў» уключанай, каб ніхто не выйграў двойчы, і націсніце «Згенераваць». Паколькі розыгрыш выкарыстоўвае крыптаграфічна бяспечную выпадковасць і цалкам працуе на вашай прыладзе, гэты працэс лёгка растлумачыць, а «Гісторыя» захавае вынік, калі ўдзельнік захоча праверыць яго пазней.

Ці магу я выкарыстоўваць інструмент, каб падзяліць людзей на каманды?

Так. Усталюйце поле «Колькасць» на памер першай каманды і націсніце «Згенераваць» — выбраныя імёны стануць першай камандай. Выдаліце іх са спіса і паўтарыце для наступнай каманды. Пакіньце наладу «Без паўтораў» уключанай, каб ніхто не трапіў у дзве каманды адначасова.

Чаму адно і тое ж імя выпала двойчы запар?

Таму што незалежныя розыгрышы маюць уласцівасць паўтарацца, і менавіта так выглядае выпадковасць. Кожны розыгрыш ігнаруе ўсе папярэднія, таму ў спісе з дзесяці імёнаў імавернасць таго, што адно і тое ж імя выпадзе двойчы запар, кожны раз складае 1 да 10 — гэта нармальна і не з'яўляецца памылкай. Уключыце «Без паўтораў», калі вам трэба, каб кожны выбар у межах аднаго розыгрышу быў унікальным.

Ці запамінае інструмент мае выбары, і ці бясплатны ён?

«Гісторыя» захоўвае вашыя апошнія 10 розыгрышаў у вашым уласным браўзеры, таму вы можаце аднавіць, скапіяваць або выдаліць папярэдні вынік, а таксама ачысціць усё, калі захочаце. Інструмент цалкам бясплатны, не патрабуе рэгістрацыі, і паколькі нічога не перадаецца, мы не змаглі б убачыць або захаваць вашыя вынікі, нават калі б захацелі.