Morate izžrebati zmagovalca nagradne igre, poklicati učenca pred tablo ali odločiti, kdo bo odnesel smeti? To brezplačno spletno orodje pošteno in naključno izbere zmagovalce s katerega koli seznama, ki ga prilepite. Vnesite svoje možnosti v polje „Elementi“ — vsako v novo vrstico ali ločeno z vejicami, v polju „Število“ nastavite želeno število rezultatov in pritisnite „Generiraj“. Seznam mora vsebovati vsaj dva elementa in lahko sprejme do 1000 vnosov, od katerih je vsak lahko dolg do 200 znakov.
Vsak izbor se izvede neposredno v vašem brskalniku s pomočjo vmesnika Web Crypto API (crypto.getRandomValues), ki pridobiva kriptografsko varne naključne vrednosti iz vašega operacijskega sistema. Vaš seznam se nikoli ne pošlje na strežnik, se ne shranjuje in mi ga nikoli ne vidimo — to je tu veliko pomembneje kot pri drugih generatorjih, saj ljudje najpogosteje prilepijo sezname strank, redovalnice ali imena sodelavcev. Gumb „Naloži iz datoteke“ spoštuje isto obljubo: vaš brskalnik sam prebere datoteko in izpolni polje lokalno, ne da bi karkoli kamorkoli naložil.
Nastavitve so prilagojene seznamom, ki jih ljudje dejansko uporabljajo. Možnost „Ločilo“ je privzeto nastavljena na „Samodejno“ in sama prepozna nove vrstice ter vejice, zato seznam, kopiran iz preglednice, klepeta ali dokumenta, deluje brez dodatnega oblikovanja. Zaklenite ga na „Nova vrstica“, „Vejica“ ali „Presledek“, če se v vaših podatkih mešajo oblike. Upoštevajte, da je „Presledek“ vedno zavestna izbira in se nikoli ne uporabi samodejno, saj vnosi, kot sta ime in priimek, vsebujejo presledke, samodejno ločevanje po njih pa bi pokvarilo seznam. Polje „Število“ določa, koliko elementov bo izžrebanih (od 1 do 100). Žrebate tri dobitnike nagrad izmed 200 udeležencev? Prilepite udeležence, nastavite „Število“ na 3 in pritisnite „Generiraj“. Dve nastavitvi se uveljavita šele, ko je število izbir 2 ali več, in do takrat ostaneta neaktivni (sivi): stikalo „Brez ponovitev“, ki določa, ali je isti element lahko izžreban dvakrat, in „Oblika rezultata“, ki določa, kako so rezultati ločeni („Vsak v novi vrstici“, „Ločeno s presledki“ ali „Ločeno z vejicami“).
Vrstica z gumbi znotraj polja „Elementi“ opravlja urejanje, ki bi ga sicer morali narediti kje drugje. „Naloži iz datoteke“ potegne seznam neposredno iz besedilne ali CSV datoteke. „Naključno“ premeša vrstni red vnosov v polju, „Razvrsti“ jih razvrsti po abecedi in naravnem zaporedju števil (drugi klik pa zaporedje obrne), medtem ko „Počisti“ popolnoma izprazni polje. Gumb „Vstavi primer“ vstavi kratek testni seznam, da lahko orodje preizkusite z enim klikom. Možnost „Razširi na celoten seznam“ odpre polje tako, da prikaže celoten dolg seznam, „Strni“ pa ga vrne na privzeto velikost. Pod rezultatom gumb „Kopiraj vse“ vsak izbran element prekopira v odložišče, „Shrani v datoteko“ jih zapiše v vašo napravo, „Zgodovina“ pa v vašem brskalniku shrani zadnjih 10 žrebanj, tako da je prejšnji rezultat na voljo z enim klikom.
Kako dejansko poteka naključni izbor? Ko pritisnete „Generiraj“, stran od brskalnika namesto zanašanja na psevdonaključno JavaScript funkcijo Math.random() zahteva naključne vrednosti prek crypto.getRandomValues in jih uporabi za izbiro položajev na vašem seznamu. Pretvarjanje surove 32-bitne vrednosti v položaj je mesto, kjer večina orodij potiho dela napake: deljenje vrednosti z dolžino seznama in vzetje ostanka (modula) je očiten, a pristranski pristop. To je zato, ker, razen če se število 2^32 deli z dolžino seznama brez ostanka, elementi na začetku seznama izpadejo nekoliko pogosteje kot preostali. Ta pomanjkljivost se imenuje modulo bias in je merljiva, ne pa teoretična. To orodje namesto tega zavrže vsako vrednost, ki presega največji natančen večkratnik dolžine seznama, in žreba znova — tehnika, znana kot rejection sampling. To stane nekaj dodatnih žrebanj v ozadju, a namesto približnega zagotavlja natančno jamstvo. Položaj na seznamu ne spremeni ničesar: prvi in zadnji element imata pri vsakem žrebanju enako verjetnost.
Stikalo „Brez ponovitev“ ločuje dve popolnoma različni vrsti žrebanj, in statistika ima za vsako svoje ime. Ko je vklopljeno, orodje premeša kopijo vašega seznama z algoritmom Fisher-Yates in vzame elemente z vrha — povsem enako, kot bi vlekli listke iz klobuka in jih ne bi vračali nazaj, zato nihče ni izbran dvakrat in ima vsaka skupina te velikosti enake možnosti. Temu se reče sampling without replacement (vzorčenje brez ponavljanja), in to je tisto, kar potrebujete pri izbiri dobitnikov nagrad, ekip ali vrstnega reda. Ko je izklopljeno, se vsaka izbira opravi neodvisno iz celotnega seznama, zato lahko isti element pade večkrat. To je sampling with replacement (vzorčenje s ponavljanjem), ki ga potrebujemo, ko vsi ostanejo upravičeni v vsakem krogu, kot na primer pri ponavljajočih se žrebanjih ali pri hitrem statističnem vzorčenju. Nobeden od teh načinov ni poštenejši od drugega; preprosto odgovarjata na različne potrebe.
Pošten žreb na zunaj ne sme izgledati pošten. Če izmed desetih imen izžrebate pet, boste redno videli dva elementa, ki sta bila na prvotnem seznamu sosednja, ali pa isto ime dvakrat zapored (če so ponovitve dovoljene), in vsak od teh primerov je povsem običajen. Vsako žrebanje je neodvisno: prejšnji rezultati nimajo nobenega vpliva na kasnejše, in nikoli ne pride „vrsta“ na nikogar, da zmaga. Nagon, ki trdi nasprotno, se imenuje gambler's fallacy (kockarska zmota), in to je isti nagon, zaradi katerega sami slabo izbiramo naključno — ko nas prosijo za naključno izbiro, se izogibamo prvemu in zadnjemu elementu, poskušamo ne ponavljati imen in svoje izbire razporedimo veliko bolj enakomerno kot prava naključnost. Rezultat, ki izgleda sumljivo urejen, je prstni odtis človeka; prava naključnost ustvarja skupke in ponovitve.
Zakaj izbrati to orodje za naključni izbor?
- Žrebanje samo v brskalniku: vaš seznam se prebere v vaši napravi in se nikamor ne pošlje
- Web Crypto API naključnost: kriptografsko varno, ne Math.random()
- Brez modulo bias: rejection sampling ohranja enake možnosti za vse elemente
- Kakršna koli oblika seznama: vsak v svoji vrstici, z vejico ali presledkom, brez preoblikovanja
- Način „Brez ponovitev“: izžrebajte zmagovalce ali ekipe tako, da nihče ne bo izbran dvakrat
- Do 1000 vnosov na seznamu in do 100 rezultatov pri enem žrebanju
- Vgrajena orodja za seznam: naloži iz datoteke, naključno, razvrsti, počisti, primer podatkov
- Zgodovina in Shrani v datoteko: obdržite zapis o žrebanju, ki ga boste morda morali utemeljiti
- Neomejeno in brezplačno: brez registracije, brez omejitev uporabe, ničesar na naših strežnikih
Naključni izbor pride prav povsod, kjer mora odločitev preživeti preizpraševanje. Učitelji kličejo učence pred tablo brez izpostavljanja ljubljencev in delijo razred v projektne skupine. Ustvarjalci vsebin in tržniki žrebajo zmagovalce nagradnih iger pred občinstvom, ki mora verjeti v poštenost rezultata. Vodje razdeljujejo naloge, ki jih nihče noče prevzeti prostovoljno, ekipe pa določajo vrstni red predstavitev ali dežurstva. Raziskovalci potegnejo naključen vzorec zapisov za revizijo. Družine končajo prepir o tem, kaj bodo gledali, lačna družba pa izbere gostilno. Skupna lastnost vseh teh situacij je izbor, ki ga kasneje lahko kdor koli pojasni: žrebanje uporablja kriptografsko naključnost, poteka izključno na vaši napravi, razdelek „Zgodovina“ pa shrani rezultat, če bi kasneje kdo podvomil vanj.
Vredno je poznati tudi nekaj poštenih omejitev tega orodja. Orodje ne more izžrebati več edinstvenih elementov, kot jih vsebuje vaš seznam — za tri zmagovalce so potrebna vsaj tri imena — in se ustavi pri 1000 vnosih (z do 200 znaki vsak) ter 100 rezultatih pri enem žrebanju. Gumba „Naključno“ in „Razvrsti“ delujeta po vrsticah, zato se bo seznam, ločen z vejicami in prilepljen v eni vrstici, preuredil šele, ko bodo elementi razporejeni vsak v svojo vrstico; poleg tega oba gumba preuredita besedilo v polju in ne samega žrebanja, saj je žrebanje enako pošteno, ne glede na to, v kakšnem vrstnem redu so vaši vnosi. Prav tako ima vsak element privzeto povsem enako težo, zato mora biti ime, ki naj ima pri žrebanju dvojne možnosti, na seznamu vneseno dvakrat. Znotraj teh meja je jamstvo trdno — vsak element z vašega seznama ima popolnoma enake možnosti pri vsakem posameznem žrebanju.