Potrebujete vylosovať výhercu súťaže, vyvolať žiaka k tabuli alebo rozhodnúť, kto pôjde vyniesť smeti? Tento bezplatný online náhodný výber zo zoznamu spravodlivo vyberie z akéhokoľvek textu, ktorý do neho vložíte. Vložte svoje záznamy do poľa „Položky“ — jeden na riadok, alebo oddelené čiarkami —, nastavte požadované množstvo pomocou poľa „Počet“ a stlačte „Generovať“. Zoznam potrebuje aspoň dva záznamy a zvládne ich až 1000, pričom každý z nich môže mať dĺžku maximálne 200 znakov.
Každý výber sa vykonáva priamo vo vašom prehliadači prostredníctvom Web Crypto API (crypto.getRandomValues), ktoré poskytuje kryptograficky silné náhodné hodnoty zo základného systému náhodnosti vášho prehliadača. Váš zoznam sa nikdy neodosiela na žiadny server, nezaznamenáva sa a my ho nikdy nevidíme — a na tom tu záleží viac než pri iných generátoroch, pretože ľudia sem zvyčajne vkladajú zoznamy zákazníkov, triedne výkazy alebo mená svojich kolegov. Tlačidlo „Načítať zo súboru“ dodržiava rovnaký sľub: váš vlastný prehliadač načíta súbor a vyplní pole výhradne lokálne, pričom sa nikam nič nenahráva.
Možnosti sú prispôsobené pre formáty zoznamov, ktoré ľudia skutočne majú. Voľba „Oddeľovač“ je nastavená na „Automaticky“, čo samo rozozná zalomenia riadkov od čiarok a zistí, ktorý z nich vaša zostava používa, takže text skopírovaný z tabuľky, četovej správy alebo dokumentu funguje bez akejkoľvek úpravy. Ak vaše dáta formáty miešajú, uzamknite ho na „Zalomenie riadka“, „Čiarka“ alebo „Medzera“ — a pamätajte, že „Medzera“ je vždy vedomou voľbou a nikdy nie automatickou, pretože položky, ako sú celé mená, obsahujú medzery samy o sebe a ich predvolené rozdelenie by pokazilo viac zoznamov, než by opravilo. Políčko „Počet“ určuje, koľko záznamov sa vylosuje, od 1 do 100. Losujete troch výhercov spomedzi 200 súťažiacich? Vložte účastníkov, nastavte „Počet“ na 3 a stlačte „Generovať“. Dva ovládacie prvky sa uplatnia až vtedy, keď je hodnota 2 alebo viac, a dovtedy zostanú sivé: „Bez opakovania“, ktoré rozhoduje, či ten istý záznam môže byť vytiahnutý dvakrát, a „Formát výsledku“, ktoré nastavuje, ako sú výbery oddelené — „Jeden na riadok“, „Oddelené medzerami“ alebo „Oddelené čiarkami“.
Riadok tlačidiel priamo v poli „Položky“ vykonáva úpravy, ktoré by ste inak museli robiť inde. Funkcia „Načítať zo súboru“ natiahne zoznam priamo z obyčajného textového súboru alebo CSV. Tlačidlo „Zamiešať“ náhodne preusporiada záznamy v poli, „Zoradiť“ ich usporiada abecedne s prirodzeným zoraďovaním čísel (a druhé kliknutie to celé otočí), zatiaľ čo „Vymazať“ pole úplne vyprázdni. Tlačidlo „Vložiť príklad“ vloží krátky ukážkový zoznam, aby ste si mohli nástroj vyskúšať jedným kliknutím, zatiaľ čo „Rozbaliť na celý zoznam“ zväčší pole, aby sa dlhý zoznam zobrazil celý, a „Zbaliť“ ho opäť zmenší. Hneď pod výsledkom funkcia „Kopírovať všetko“ pošle každý výber do vašej schránky, „Uložiť do súboru“ ich zapíše na disk a vaša „História“ uchováva vo vašom prehliadači posledných 10 losovaní, takže predchádzajúci výsledok je vždy na dosah jedného kliknutia.
Ako sa výber vlastne robí? Keď stlačíte „Generovať“, stránka požiada prehliadač o náhodné hodnoty cez crypto.getRandomValues a použije ich na výber pozícií vo vašom zozname, namiesto toho, aby sa spoliehala na pseudonáhodnú JavaScriptovú funkciu ako Math.random(). Premena surovej 32-bitovej hodnoty na konkrétnu pozíciu je presne ten moment, kedy online nástroje potichu zlyhávajú: výpočet modula z hodnoty a dĺžky zoznamu je zjavným a zároveň skresleným prístupom, pretože pokiaľ sa 2^32 nedelí bezo zvyšku dĺžkou zoznamu, záznamy blízko začiatku zoznamu sa objavia o niečo častejšie ako tie ostatné. Táto chyba sa nazýva modulo bias (skreslenie modula) a je skôr merateľná než len teoretická. Tento nástroj namiesto toho zahodí akúkoľvek hodnotu presahujúcu najväčší presný násobok dĺžky zoznamu a losuje znova — ide o techniku nazývanú rejection sampling (vzorkovanie s odmietnutím). Stojí to niekoľko ťahov navyše, ale zabezpečuje to presnú záruku namiesto tej približnej. Pozícia v zozname nič nemení: prvý a posledný záznam majú pri každom ťahu absolútne rovnakú pravdepodobnosť.
Prepínač „Bez opakovania“ oddeľuje dva skutočne odlišné druhy losovania, a štatistika má pre každý z nich iný názov. Keď je prepínač zapnutý, nástroj zamieša kópiu vášho zoznamu pomocou algoritmu Fisher-Yates a odoberie záznamy z vrchu — presne to isté, ako keď ťaháte lístky z klobúka a nevraciate ich späť, takže nikto nie je vybraný dvakrát a každá skupina tejto veľkosti má rovnakú šancu. Ide o výber bez nahradenia (sampling without replacement), a presne to potrebujete pri losovaní výhercov cien, tímov a pri určovaní poradia. Keď je prepínač vypnutý, každý výber prebieha úplne nezávisle z celého zoznamu, takže rovnaký záznam sa môže objaviť viackrát — ide o výber s nahradením (sampling with replacement), čo potrebujete vtedy, keď všetci zostávajú oprávnení v každom kole, napríklad pri opakovaných losovaniach alebo pri rýchlej štatistickej vzorke. Ani jeden z režimov nie je spravodlivejší než ten druhý; len riešia odlišné zadania.
Spravodlivé losovanie nemá vyzerať spravodlivo. Vytiahnite päť mien z desiatich a pravidelne uvidíte dva výbery, ktoré v pôvodnom zozname sedeli vedľa seba, alebo to isté meno dvakrát po sebe hneď ako povolíte opakovania — a každé z toho je úplne prirodzené. Každý ťah je nezávislý: predchádzajúce výbery nemajú absolútne žiadny vplyv na tie neskoršie a nikto sa nikdy nestáva „dlžníkom“ výhry. Inštinkt, ktorý tvrdí opak, je omyl hazardného hráča (gambler's fallacy), a je to ten istý inštinkt, kvôli ktorému sme my sami veľmi zlí pri náhodnom výbere — keď máme vyberať náhodne, vyhýbame sa prvému a poslednému záznamu, vyhýbame sa opakovaniu mena a rozložíme naše voľby oveľa rovnomernejšie, než by to kedy urobila náhoda. Výsledok, ktorý vyzerá podozrivo úhľadne, je odtlačkom človeka; skutočná náhodnosť vytvára zhluky.
Prečo si vybrať tento nástroj na náhodný výber zo zoznamu?
- Losovanie iba v prehliadači: váš zoznam sa číta na vašom zariadení a nikdy sa nikam neposiela
- Náhodnosť cez Web Crypto API: kryptograficky bezpečné, nie Math.random()
- Žiadne skreslenie modula: vzorkovanie s odmietnutím udržuje každú položku rovnako pravdepodobnú
- Akýkoľvek tvar zoznamu: jeden na riadok, podľa čiarky alebo medzery, bez preformátovania
- Režim „Bez opakovania“: vylosujte víťazov alebo tímy tak, aby nebol nikto vybraný dvakrát
- Až 1000 záznamov a do 100 výberov v jednom jedinom ťahu
- Vstavané nástroje: načítať zo súboru, zamiešať, zoradiť, vymazať, vložiť príklad
- História a ukladanie do súboru: uchovajte si záznam z losovania, ktorý možno budete musieť odôvodniť
- Neobmedzené a zadarmo: žiadna registrácia, žiadne limity použitia, nič na našich serveroch
Náhodný výber prichádza na rad všade tam, kde rozhodnutie musí prežiť prípadné spochybnenie. Učitelia na Slovensku vyvolávajú žiakov k tabuli bez obľúbencov a spravodlivo delia triedu na projektové skupiny. Streameri a marketéri losujú výhercov súťaží a tomboly pred publikom, ktoré musí uveriť výsledku. Manažéri rozdávajú úlohy, na ktoré sa nikto nehlási dobrovoľne, a tímy riešia poradie prezentácií alebo to, kto má pohotovosť. Výskumníci odoberajú náhodnú vzorku záznamov na audit. Rodiny ukončujú hádky o tom, čo si pozrieť, a hladná partia vyberá reštauráciu. Spoločným znakom je výber, ktorý potom dokáže vysvetliť ktokoľvek: losovanie využíva kryptografickú náhodnosť, prebieha úplne na vašom zariadení a vaša „História“ uchová výsledok, ak by sa naň niekto neskôr pýtal.
Tento nástroj má niekoľko úprimných obmedzení, ktoré stoja za zmienku. Nedokáže vybrať viac unikátnych záznamov, ako obsahuje váš zoznam — traja víťazi potrebujú aspoň tri mená — a zastaví sa na 1000 záznamoch, každý s dĺžkou 200 znakov, pričom v jednom ťahu povolí maximálne 100 výberov. Tlačidlá „Zamiešať“ a „Zoradiť“ fungujú riadok po riadku, takže zoznam oddelený čiarkami vložený do jedného riadka bude preusporiadaný až vtedy, keď to bude jeden záznam na riadok; a obe tieto funkcie preusporiadajú len pole a nie samotné losovanie, ktoré zostáva rovnako spravodlivé bez ohľadu na to, v akom poradí sa vaše záznamy nachádzajú. Navyše, každý záznam nesie zámerne presne rovnakú váhu, takže losovanie, pri ktorom by jedno meno malo platiť dvojnásobne, bude vyžadovať, aby toto meno bolo v zozname uvedené dvakrát. V rámci týchto hraníc je to naozaj silná záruka — každý jeden záznam vo vašom zozname má v úplne každom losovaní absolútne rovnakú šancu.