Случаен избор от списък

Поставете списък с имена, задачи или идеи и оставете инструмента да направи честен случаен избор. Всяко теглене се извършва локално в браузъра ви, така че списъкът никога не напуска устройството ви.

Натиснете Генерирай за теглене
Разделителят се открива автоматично, но по-долу можете да го изберете ръчно.
Разширени опции

Трябва да изтеглите победител в игра, да посочите ученик за изпитване или да решите кой да измие чиниите? Този безплатен онлайн инструмент прави честен случаен избор от всеки предоставен списък. Въведете данните си в полето „Елементи“ — по един на ред или разделени със запетая — задайте колко резултата искате чрез „Брой“ и натиснете „Генерирай“. Списъкът се нуждае от поне два записа и побира до 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 (извадка с отхвърляне), която премахва модулното отклонение, характерно за наивните имплементации. Всеки запис има абсолютно същата вероятност, независимо от позицията си в списъка, а тегленето на няколко различни записа използва разбъркване на Fisher-Yates, така че всяка група от този размер е еднакво вероятна.

Списъкът ми качва ли се на вашия сървър?

Не. Цялото теглене се изпълнява локално във вашия браузър: списъкът, изборът и историята никога не напускат устройството ви, така че е напълно безопасно да поставяте имена, имейли или частни списъци. Бутонът „Зареждане от файл“ също е локален — браузърът ви прочита файла сам и нищо не се качва.

Мога ли да поставя списък, разделен със запетаи или интервали, вместо по един елемент на ред?

Да. Опцията „Разделител“ е зададена на „Автоматично“, което само различава новите редове от запетаите. Така списък, копиран от електронна таблица, чат съобщение или документ, работи без промяна. Списъкът, разделен с интервали, изисква една допълнителна стъпка — задайте „Разделител“ на „Интервал“ — тъй като записи като пълни имена съдържат интервали в себе си и никога не се разделят по тях автоматично. Заключете „Разделител“ на „Нов ред“ или „Запетая“, ако данните ви смесват формати.

Какво прави превключвателят „Без повторения“?

Когато „Без повторения“ е включено, всеки изтеглен запис е различен — подобно на теглене на билети от шапка без връщането им, което е необходимо при избор на победители или отбори. Когато е изключено, един и същ запис може да бъде изтеглен повече от веднъж, което статистиците наричат извадка с възвръщане.

Защо опциите „Без повторения“ и „Формат на резултата“ са неактивни?

Защото и двете важат само когато теглите повече от един запис, както гласи подсказката до тях: „Важи само когато броят е по-голям от 1.“ Увеличете полето „Брой“ на 2 или повече и двете ще станат достъпни; при изтегляне на само един елемент няма какво да се повтаря или разделя.

За какво служи опцията „Формат на резултата“?

Тя определя как се показват и копират няколко избора: „Всеки на нов ред“, „Разделени с интервал“ за бързо чат съобщение, или „Разделени със запетая“ за поставяне в електронна таблица или скрипт. Опцията става достъпна, когато „Брой“ е 2 или повече.

Какво правят бутоните „Разбъркване“ и „Сортиране“?

„Разбъркване“ променя реда на записите в полето „Елементи“, а „Сортиране“ ги подрежда по азбучен ред с естествено подреждане на числата — повторното кликване върху сортирането обръща реда. И двете променят начина, по който е записан списъкът ви, а не начина, по който работи тегленето: алгоритъмът е еднакво честен, независимо от реда на записите.

Колко елемента може да съдържа списъкът и колко мога да изтегля наведнъж?

Списъкът побира от 2 до 1000 записа, всеки до 200 символа, а едно теглене връща до 100 избора. Празните редове и ограждащите интервали се игнорират, така че списък, поставен от електронна таблица или документ, работи както е.

Подходящ ли е за теглене на победители от томболи и игри?

Да, това е едно от най-честите му приложения. Поставете участниците, задайте „Брой“ на броя на наградите, оставете „Без повторения“ включено, за да не спечели никой два пъти, и натиснете „Генерирай“. Тъй като тегленето използва криптографски сигурна случайност и се изпълнява изцяло на вашето устройство, процесът е лесен за обяснение, а „История“ пази резултата, ако някой участник го оспори по-късно.

Мога ли да го използвам за разделяне на хора по отбори?

Да. Задайте „Брой“ на размера на първия отбор и натиснете „Генерирай“ — изтеглените имената са първият отбор. Премахнете ги от списъка и повторете за следващия. Оставете „Без повторения“ включено, за да не попадне никой в два отбора едновременно.

Защо едно и също име се падна два пъти подред?

Защото независимите тегления се повтарят и точно така изглежда случайността. Всяко теглене игнорира всички предходни, така че в списък от десет имена шансовете едно и също име да се падне два пъти подред са 1 към 10 всеки път — напълно обичайно, а не грешка. Включете „Без повторения“, ако имате нужда всеки избор в рамките на едно теглене да бъде различен.

Пази ли генераторът моите избори и безплатен ли е?

Секцията „История“ пази последните ви 10 тегления в собствения ви браузър, така че можете да възстановите, копирате или изтриете предишен резултат и да изчистите списъка, когато пожелаете. Инструментът е напълно безплатен, без регистрация, и тъй като не се предават никакви данни, не бихме могли да видим или съхраним вашите избори, дори и да искахме.