Треба да извлечете победник на наградна игра, да повикате ученик пред табла или да одлучите кој ќе го фрли ѓубрето денес? Оваа бесплатна онлајн алатка праведно и по случаен избор избира победници од која било листа што ќе ја вметнете. Внесете ги вашите опции во полето „Елементи“ — по една во секој ред или одделени со запирки, поставете го саканиот број на резултати во полето „Број“ и притиснете „Генерирај“. Листата мора да има најмалку два елементи и може да собере до 1000 записи, секој со должина до 200 знаци.
Секое извлекување се врши директно во вашиот прелистувач користејќи Web Crypto API (crypto.getRandomValues), кое добива криптографски сигурни случајни вредности од вашиот оперативен систем. Вашата листа никогаш не се испраќа на сервер, не се зачувува и ние никогаш не ја гледаме — ова овде е многу поважно отколку кај другите генератори, бидејќи луѓето најчесто вметнуваат листи на клиенти, класни дневници или имиња на колеги. Копчето „Вчитај од датотека“ го почитува истото ветување: вашиот прелистувач самиот ја чита датотеката и го пополнува полето локално, без да прикачува ништо никаде.
Опциите се прилагодени на листите што луѓето навистина ги користат. Опцијата „Разделувач“ стандардно е поставена на „Автоматски“ и самата препознава нови редови и запирки, така што листата копирана од табела, порака или документ функционира без дополнително форматирање. Заклучете ја на „Нов ред“, „Запирка“ или „Празно место“ кога во вашите податоци се мешаат различни формати. Имајте предвид дека опцијата „Празно место“ е секогаш свесен избор и никогаш не се применува автоматски, бидејќи записите како име и презиме содржат празни места во себе, а автоматското разделување според нив би ја уништило листата. Полето „Број“ одредува колку елементи ќе се извлечат (од 1 до 100). Извлекувате тројца добитници од 200 учесници? Вметнете ги учесниците, поставете го полето „Број“ на 3 и притиснете „Генерирај“. Две опции стануваат достапни само кога бројот е 2 или повеќе, а дотогаш остануваат неактивни (сиви): прекинувачот „Без повторувања“, кој одлучува дали истиот елемент може да се извлече двапати, и опцијата „Формат на резултатот“, која одредува како се разделуваат резултатите („Секој во нов ред“, „Одделени со празни места“ или „Одделени со запирки“).
Низата копчиња внатре во полето „Елементи“ врши уредување кое инаку би морале да го правите на друго место. Копчето „Вчитај од датотека“ извлекува листа директно од текстуална или CSV датотека. „Мешај“ го менува редоследот на записите во полето, „Подреди“ ги подредува азбучно и според природниот редослед на броевите (додека втор клик го превртува редоследот), а „Исчисти“ целосно го празни полето. Копчето „Внеси пример“ вметнува кратка тест листа за да можете да ја испробате алатката со еден клик. Опцијата „Прошири за целата листа“ го отвора полето за да ја прикаже целата долга листа, додека „Собри“ го враќа во првобитната големина. Под резултатот, копчето „Копирај сѐ“ го пренесува секој извлечен елемент во таблата со исечоци, „Зачувај во датотека“ ги запишува на вашиот уред, а делот „Историја“ ги чува вашите последни 10 извлекувања во прелистувачот, па претходниот резултат ви е достапен со еден клик.
Како навистина се прави случајниот избор? Кога ќе притиснете „Генерирај“, страницата, наместо да се потпира на псевдослучајната JavaScript функција Math.random(), бара од прелистувачот случајни вредности преку crypto.getRandomValues и ги користи за да избере позиции во вашата листа. Претворањето на сирова 32-битна вредност во позиција е местото каде што повеќето алатки тивко грешат: делењето на вредноста со должината на листата и земањето на остатокот е очигледен, но пристрасен метод. Тоа е така бидејќи, освен ако бројот 2^32 не се дели со должината на листата без остаток, елементите на почетокот од листата паѓаат малку почесто од останатите. Овој недостаток се нарекува modulo bias и е мерлив, а не теоретски. Оваа алатка наместо тоа ја отфрла секоја вредност што го надминува најголемиот точен содржател на должината на листата и извлекува повторно — техника позната како rejection sampling. Ова чини неколку дополнителни извлекувања во позадина, но дава точна гаранција наместо приближна. Позицијата во листата не менува ништо: првиот и последниот елемент имаат еднаква веројатност при секое извлекување.
Прекинувачот „Без повторувања“ одвојува два сосема различни вида на извлекување, а во статистиката секој од нив има свое име. Кога е вклучен, алатката меша копија од вашата листа користејќи го алгоритмот Fisher-Yates и ги зема елементите од врвот — исто како да влечете ливчиња од капа без да ги враќате назад, така што никој не се избира двапати и секоја група со таа големина има еднакви шанси. Ова се нарекува sampling without replacement, и тоа е она што ви треба при избор на добитници на награди, тимови или редослед за настап. Кога е исклучен, секој избор се прави независно од целата листа, па така истиот елемент може да падне повеќе од еднаш. Тоа е sampling with replacement, што е потребно кога сите остануваат валидни во секој круг, како кај повторени извлекувања или при брз статистички примерок. Ниту еден од овие режими не е поправеден од другиот; тие едноставно одговараат на различни потреби.
Фер извлекувањето од страна не треба да изгледа фер. Ако извлекувате пет имиња од десет, редовно ќе гледате два елементи кои во првичната листа биле еден до друг, или истото име двапати по ред (ако се дозволени повторувања), и секој од овие случаи е сосема нормален. Секое извлекување е независно: претходните резултати немаат никакво влијание врз следните, и никогаш не доаѓа нечиј „ред“ за победа. Инстинктот што го тврди спротивното се нарекува gambler's fallacy, и тоа е истиот инстинкт поради кој ние самите лошо правиме случаен избор — кога ќе нѐ замолат да избереме нешто по случаен избор, ги избегнуваме првиот и последниот елемент, се трудиме да не ги повторуваме имињата и нашите избори ги распределуваме многу порамномерно отколку вистинската случајност. Резултат кој изгледа сомнително уредно е отпечаток од човечки прст; вистинската случајност создава групирања и повторувања.
Зошто да ја изберете оваа алатка за случаен избор?
- Извлекување само во прелистувачот: вашата листа се чита на вашиот уред и никаде не се испраќа
- Web Crypto API случајност: криптографски сигурно, а не Math.random()
- Без modulo bias: rejection sampling ги одржува шансите еднакви за сите елементи
- Секаков облик на листа: по еден во ред, со запирка или празно место, без преформатирање
- Режим „Без повторувања“: извлекувајте победници или тимови така што никој нема да биде избран двапати
- До 1000 записи во листата и до 100 резултати при едно извлекување
- Вградени алатки за листата: вчитај од датотека, мешај, подреди, исчисти, пример податоци
- Историја и Зачувај во датотека: зачувајте евиденција за извлекување кое можеби ќе треба да го оправдате
- Неограничено и бесплатно: без регистрација, без ограничувања за користење, ништо на нашите сервери
Случајниот избор е корисен секаде каде што одлуката мора да преживее преиспитување. Наставниците повикуваат ученици пред табла без да издвојуваат миленици и го делат класот во проектни групи. Креаторите на содржина и маркетерите извлекуваат добитници на наградни игри пред публика која мора да верува во праведноста на резултатот. Менаџерите ги распределуваат задачите што никој не сака доброволно да ги преземе, а тимовите одлучуваат за редоследот на презентациите или кој ќе дежура. Истражувачите извлекуваат случаен примерок од записи за ревизија. Семејствата ставаат крај на расправата за тоа што ќе се гледа, а гладна дружина избира кафеана. Заедничка карактеристика за сите овие ситуации е избор кој секој може да го објасни подоцна: извлекувањето користи криптографска случајност, се одвива само на вашиот уред, а делот „Историја“ го зачувува резултатот ако некој подоцна се посомнева во него.
Вреди да се знаат и неколку искрени ограничувања на оваа алатка. Алатката не може да извлече повеќе уникатни елементи отколку што содржи вашата листа — за тројца победници потребни се најмалку три имиња — и има лимит од 1000 записи (со по 200 знаци секој) и 100 резултати при едно извлекување. Копчињата „Мешај“ и „Подреди“ функционираат ред по ред, па затоа листа одделена со запирки и вметната во еден ред ќе се прераспредели само кога елементите ќе бидат поделени по еден во секој ред; освен тоа, двете копчиња го менуваат редоследот на текстот во полето, а не самото извлекување, бидејќи извлекувањето е подеднакво праведно без оглед на тоа по кој редослед се вашите записи. Исто така, секој елемент стандардно има иста тежина, па ако сакате едно име да има двојни шанси при извлекувањето, тоа име мора да биде внесено двапати во листата. Во рамките на овие граници, гаранцијата е цврста — секој елемент од вашата листа има сосема исти шанси при секое поединечно извлекување.