Nejauša izvēle no saraksta

Ielīmējiet jebkuru sarakstu — vārdus, uzdevumus vai idejas — un ļaujiet rīkam veikt godīgu izvēli. Izloze notiek jūsu pārlūkprogrammā, tāpēc dati nekad neatstāj jūsu ierīci.

Nospiediet Ģenerēt, lai izlozētu
Atdalītājs tiek noteikts automātiski, bet varat to izvēlēties arī manuāli.
Papildu iestatījumi

Nepieciešams izlozēt konkursa uzvarētāju, izsaukt skolēnu pie tāfeles vai izlemt, kurš iznesīs atkritumus? Šis bezmaksas tiešsaistes rīks godīgi un nejauši izvēlas uzvarētājus no jebkura jūsu ievietotā saraksta. Ievadiet variantus laukā „Vienumi“ — pa vienam katrā rindā vai atdalītus ar komatiem, laukā „Skaits“ norādiet vajadzīgo rezultātu skaitu un nospiediet „Ģenerēt“. Sarakstā jābūt vismaz diviem elementiem, un tajā var būt līdz 1000 ierakstiem, no kuriem katrs ir līdz 200 rakstzīmēm garš.

Katra izvēle tiek veikta tieši jūsu pārlūkprogrammā, izmantojot Web Crypto API (crypto.getRandomValues), kas iegūst kriptogrāfiski drošas nejaušas vērtības no jūsu operētājsistēmas. Jūsu saraksts nekad netiek nosūtīts uz serveri, netiek saglabāts un mēs to nekad neredzam — šeit tas ir daudz svarīgāk nekā citos ģeneratoros, jo cilvēki visbiežāk ielīmē klientu sarakstus, klašu žurnālus vai kolēģu vārdus. Poga „Ielādēt no faila“ ievēro to pašu solījumu: jūsu pārlūkprogramma pati nolasa failu un aizpilda lauku lokāli, neko nekur neaugšupielādējot.

Iestatījumi ir pielāgoti sarakstiem, kurus cilvēki reāli izmanto. Iestatījums „Atdalītājs“ pēc noklusējuma atrodas režīmā „Automātiski“, kas pats atpazīst rindu lūzumus un komatus, tāpēc no izklājlapas, sarakstes vai dokumenta iekopēts saraksts darbojas bez papildu formatēšanas. Ja jūsu datos ir jaukti formāti, nofiksējiet to uz „Jauna rinda“, „Komats“ vai „Atstarpe“. Ņemiet vērā, ka „Atstarpe“ vienmēr ir apzināta izvēle un nekad netiek piemērota automātiski, jo tādos ierakstos kā vārdi un uzvārdi ir atstarpes, un automātiska sadalīšana pēc tām sabojātu sarakstu. Lauks „Skaits“ nosaka, cik elementus izlozēt (no 1 līdz 100). Izlozējat trīs balvu ieguvējus no 200 dalībniekiem? Ielīmējiet dalībniekus, laukā „Skaits“ norādiet 3 un nospiediet „Ģenerēt“. Divi iestatījumi kļūst pieejami tikai tad, kad skaits ir 2 vai vairāk, bet līdz tam ir neaktīvi (pelēki): slēdzis „Bez atkārtojumiem“, kas nosaka, vai viens elements var tikt izlozēts divreiz, un „Izvades formāts“, kas nosaka rezultātu atdalīšanas veidu („Katrs jaunā rindā“, „Atdalīti ar atstarpēm“ vai „Atdalīti ar komatiem“).

Pogu rinda laukā „Vienumi“ veic rediģēšanas darbības, kuras citādi nāktos darīt kaut kur citur. „Ielādēt no faila“ izvelk sarakstu tieši no teksta vai CSV failo. „Jaukt“ maina ierakstu secību laukā, „Kārtot“ sakārto tos alfabēta un dabiskā skaitļu secībā (otrais klikšķis to apgriež otrādi), bet „Notīrīt“ pilnībā iztukšo lauku. Poga „Aizpildiet ar datu paraugu“ ievieto īsu testa sarakstu, lai jūs varētu izmēģināt rīku ar vienu klikšķi. Poga „Izvērst, lai ietilptu saturā“ atver lauku, lai parādītu visu garo sarakstu, savukārt „Sakļaut uz noklusējuma izmēru“ atgriež to sākotnējā stāvoklī. Zem rezultāta esošā poga „Kopēt visu“ iekopē katru izvēli starpliktuvē, „Saglabāt failā“ ieraksta tos jūsu ierīcē, bet „Vēsture“ jūsu pārlūkprogrammā saglabā pēdējās 10 izlozes, lai iepriekšējais rezultāts būtu pieejams ar vienu klikšķi.

Kā reāli notiek nejaušā izvēle? Kad nospiežat „Ģenerēt“, lapa, nevis paļaujas uz JavaScript pseidonejašās funkcijas Math.random(), bet caur crypto.getRandomValues pieprasa pārlūkprogrammai nejaušas vērtības un izmanto tās saraksta pozīciju izvēlei. Neapstrādātas 32 bitu vērtības pārvēršana pozīcijā ir vieta, kur lielākā daļa rīku nemanāmi kļūdās: vērtības dalīšana ar saraksta garumu un atlikuma (moduļa) ņemšana ir acīmredzama, bet neobjektīva pieeja. Tas ir tāpēc, ka, ja vien skaitlis 2^32 nedalās ar saraksta garumu bez atlikuma, saraksta sākumā esošie elementi izkrīt nedaudz biežāk nekā pārējie. Šis trūkums tiek saukts par moduļa nobīdi (modulo bias), un tas ir mērāms, nevis teorētisks. Šis rīks tā vietā atmet jebkuru vērtību, kas pārsniedz lielāko precīzo saraksta garuma reizinātāju, un velk no jauna — šī metode ir pazīstama kā noraidīšanas izlase (rejection sampling). Tas prasa dažas papildu izlozes fonā, taču sniedz precīzu garantiju, nevis aptuvenu. Pozīcija sarakstā neko nemaina: pirmajam un pēdējam elementam ir vienāda varbūtība katrā izlozē.

Slēdzis „Bez atkārtojumiem“ atdala divus pilnīgi atšķirīgus izlozes veidus, un statistikā katram ir savs nosaukums. Kad tas ir ieslēgts, rīks sajauc jūsu saraksta kopiju, izmantojot Fisher-Yates algoritmu, un paņem elementus no augšas — tieši tāpat kā velkot lozes no cepures un neliekot tās atpakaļ, tāpēc neviens netiek izvēlēts divreiz, un katrai šāda izmēra grupai ir vienādas iespējas. To sauc par izlasi bez atgriešanas (sampling without replacement), un tas ir nepieciešams, izvēloties balvu ieguvējus, komandas vai kārtas secību. Kad tas ir izslēgts, katra izvēle tiek veikta neatkarīgi no visa saraksta, tāpēc viens un tas pats elements var izkrist vairāk nekā vienu reizi. Tā ir izlase ar atgriešanu (sampling with replacement), kas ir nepieciešama tad, kad visi saglabā savas tiesības katrā kārtā, piemēram, atkārtotās izlozēs vai ātrā statistiskā izlasē. Neviens no šiem režīmiem nav godīgāks par otru; tie vienkārši atbild uz dažādām vajadzībām.

Godīgai izlozei no malas nav jāizskatās godīgai. Ja no desmit vārdiem izlozēsiet piecus, jūs regulāri redzēsiet divus elementus, kas sākotnējā sarakstā atradās blakus, vai arī to pašu vārdu divas reizes pēc kārtas (ja atkārtojumi ir atļauti), un katrs no šiem gadījumiem ir pilnīgi normāls. Katra izloze ir neatkarīga: iepriekšējie rezultāti nekādā veidā neietekmē turpmākos, un nekad nepienāk neviena „kārta“ uzvarēt. Pretējais instinkts tiek dēvēts par spēlmaņa maldiem (gambler's fallacy), un tas ir tas pats instinkts, kura dēļ mēs paši slikti izdarām nejaušu izvēli — kad lūdzam izvēlēties nejauši, mēs izvairāmies no pirmā un pēdējā elementa, cenšamies neatkārtot vārdus un sadalām savas izvēles daudz vienmērīgāk nekā patiesa nejaušība. Rezultāts, kas izskatās aizdomīgi glīts, ir cilvēka pirkstu nospiedums; patiesa nejaušība veido grupas un atkārtojumus.

Kāpēc izvēlēties šo nejaušās izvēles rīku?

Nejauša izvēle noder visur, kur lēmumam ir jāiztur apšaubīšana. Skolotāji izsauc skolēnus pie tāfeles, neizceļot mīluļus, un sadala klasi projektu grupās. Satura veidotāji un mārketinga speciālisti izlozē konkursu uzvarētājus auditorijas priekšā, kurai jātic rezultāta godīgumam. Vadītāji sadala uzdevumus, kurus neviens nevēlas uzņemties brīvprātīgi, bet komandas izlemj prezentāciju secību vai dežūras. Pētnieki izvēlas nejaušu ierakstu izlasi auditam. Ģimenes pārtrauc strīdu par to, ko skatīties, bet izsalkusi kompānija izvēlas kafejnīcu. Visu šo situāciju kopīgā iezīme ir izvēle, ko vēlāk var pamatot jebkurš: izlozē tiek izmantota kriptogrāfiskā nejaušība, tā notiek tikai jūsu ierīcē, bet sadaļa „Vēsture“ saglabā rezultātu, ja kāds vēlāk to vēlētos apšaubīt.

Ir vērts zināt dažus godīgus šī rīka ierobežojumus. Rīks nevar izlozēt vairāk unikālu elementu, nekā ir jūsu sarakstā — trim uzvarētājiem nepieciešami vismaz trīs vārdi — un tas apstājas pie 1000 ierakstiem (līdz 200 rakstzīmēm katrā) un 100 rezultātiem vienā izlozē. Pogas „Jaukt“ un „Kārtot“ darbojas rindu pa rindai, tāpēc vienā rindā ielīmēts saraksts ar komatiem tiks pārkārtots tikai tad, kad elementi būs sadalīti pa vienam katrā rindā; turklāt abas pogas maina laukā esošā teksta, nevis pašas izlozes secību, jo izloze ir vienlīdz godīga neatkarīgi no tā, kādā secībā ir jūsu ieraksti. Tāpat katram elementam pēc noklusējuma ir pilnīgi vienāds svars, tāpēc, lai vienam vārdam izlozē būtu dubultas izredzes, tas sarakstā jānorāda divas reizes. Šo robežu ietvaros garantija ir stingra — katram jūsu saraksta elementam ir pilnīgi vienādas izredzes katrā atsevišķā izlozē.

FAQ

Kā es varu nejauši izvēlēties vārdu no saraksta?

Ielīmējiet vārdus laukā „Vienumi“ — pa vienam rindā vai atdalītus ar komatiem vai atstarpēm — atstājiet „Skaits“ vērtību uz 1 un nospiediet „Ģenerēt“. Viens vārds tiks izlozēts nekavējoties. Ja vēlaties izlozēt vairākus vārdus uzreiz, palieliniet lauka „Skaits“ vērtību līdz nepieciešamajam skaitam.

Vai izvēle tiešām ir godīga?

Jā. Katrā izlozē tiek izmantota jūsu pārlūkprogrammas Web Crypto API (crypto.getRandomValues) kopā ar noraidīšanas izlasi (rejection sampling), kas novērš moduļa nobīdi, kura rodas vienkāršas ieviešanas gadījumā. Katram elementam ir tieši tāda pati varbūtība tikt izlozētam, neatkarīgi no tā pozīcijas sarakstā, un vairāku unikālu elementu izlozei tiek izmantots Fisher-Yates jaukšanas algoritms, tāpēc arī katrai šāda izmēra grupai ir vienādas izredzes.

Vai mans saraksts tiek augšupielādēts jūsu serverī?

Nē. Visa izloze notiek lokāli jūsu pārlūkprogrammā: saraksts, rezultāti un vēsture nekad neatstāj jūsu ierīci, tāpēc ir droši ielīmēt vārdus, e-pastus vai jebkurus privātus sarakstus. „Ielādēt no faila“ arī darbojas lokāli — jūsu pārlūkprogramma pati nolasa failu un nekas netiek augšupielādēts internetā.

Vai es varu ievietot ar komatiem vai atstarpēm atdalītu sarakstu tā vietā, lai katrs elements būtu jaunā rindā?

Jā. Iestatījums „Atdalītājs“ ir noregulēts uz „Automātiski“, kas pats atpazīst rindu lūzumus un komatus, tāpēc saraksts, kas iekopēts no izklājlapas, sarakstes vai dokumenta, darbojas bez jebkādām izmaiņām. Sarakstam, kas atdalīts ar atstarpēm, ir nepieciešams viens papildu solis — iestatiet „Atdalītājs“ uz „Atstarpe“ — jo tādos elementos kā vārdi un uzvārdi pašos ir atstarpes, un tie nekad netiek dalīti automātiski. Ja jūsu datos ir jaukti formāti, nofiksējiet „Atdalītājs“ uz „Jauna rinda“ vai „Komats“.

Ko dara slēdzis „Bez atkārtojumiem“?

Kad „Bez atkārtojumiem“ ir ieslēgts, katrs izlozētais elements ir atšķirīgs — tas ir tāpat kā vilkt lozes no cepures, neieliekot tās atpakaļ, un tas ir tieši tas, kas nepieciešams, izvēloties uzvarētājus vai komandas. Kad tas ir izslēgts, viens un tas pats elements var tikt izlozēts vairāk nekā vienu reizi, ko statistiķi sauc par izlasi ar atgriešanu (sampling with replacement).

Kāpēc iestatījumi „Bez atkārtojumiem“ un „Izvades formāts“ ir neaktīvi (pelēki)?

Tāpēc, ka tie abi tiek piemēroti tikai tad, kad izlozējat vairāk nekā vienu elementu, kā norāda paskaidrojums blakus tiem: „Attiecas tikai tad, ja skaits ir lielāks par 1.“ Palieliniet lauka „Skaits“ vērtību uz 2 vai vairāk, un abi kļūs pieejami; kamēr skaits ir 1, nav ko dublēt un nav ko atdalīt.

Ko dara opcija „Izvades formāts“?

Tā nosaka, kā tiks parādīti un kopēti vairāki rezultāti: „Katrs jaunā rindā“, „Atdalīti ar atstarpēm“ ātrai nosūtīšanai tērzēšanā, vai „Atdalīti ar komatiem“, lai ievietotu izklājlapā vai skriptā. Šī opcija kļūst pieejama, kad „Skaits“ ir 2 vai vairāk.

Ko dara pogas „Jaukt“ un „Kārtot“?

„Jaukt“ maina ierakstu secību lauka „Vienumi“ iekšpusē, bet „Kārtot“ sakārto tos alfabēta un dabiskā skaitļu secībā — nospiežot vēlreiz, secība tiek apgriezta otrādi. Abas pogas maina tikai to, kā ir uzrakstīts jūsu saraksts, nevis to, kā darbojas izloze: rīks ir vienlīdz godīgs neatkarīgi no elementu secības.

Cik elementu var būt sarakstā un cik daudz es varu izlozēt vienlaicīgi?

Sarakstā ietilpst no 2 līdz 1000 ierakstiem (līdz 200 rakstzīmēm katrā), un viena izloze atgriež līdz 100 rezultātiem. Tukšās rindas un atstarpes malās tiek ignorētas, tāpēc no izklājlapas vai dokumenta ielīmēts saraksts darbojas bez izmaiņām.

Vai šis rīks ir piemērots konkursu un loteriju uzvarētāju izvēlei?

Jā, un tas ir viens no visbiežākajiem lietošanas veidiem. Ielīmējiet dalībniekus, norādiet „Skaits“ atbilstoši balvu skaitam, atstājiet slēdzi „Bez atkārtojumiem“ ieslēgtu, lai neviens neiegūtu divas balvas, un nospiediet „Ģenerēt“. Tā kā izloze izmanto kriptogrāfiski drošu nejaušību un darbojas tikai jūsu ierīcē, procesu ir viegli pamatot, bet sadaļa „Vēsture“ saglabā rezultātu, ja kādam no dalībniekiem vēlāk rastos šaubas.

Vai es varu to izmantot, lai sadalītu cilvēkus komandās?

Jā. Iestatiet laukā „Skaits“ pirmās komandas dalībnieku skaitu un nospiediet „Ģenerēt“ — izlozētie vārdi būs pirmā komanda. Izdzēsiet tos no saraksta un atkārtojiet procesu nākamajai komandai. Atstājiet slēdzi „Bez atkārtojumiem“ ieslēgtu, lai neviens neiekļūtu divās komandās vienlaikus.

Kāpēc viens un tas pats vārds izkrita divas reizes pēc kārtas?

Jo neatkarīgas izlozes var atkārtoties, un tieši tā izskatās patiesa nejaušība. Katra izloze ignorē visas iepriekšējās, tāpēc desmit vārdu sarakstā vienam un tam pašam vārdam divreiz pēc kārtas katru reizi ir 1 no 10 iespēja izkrist — tā nav kļūda, bet normāla situācija. Ieslēdziet „Bez atkārtojumiem“, ja vēlaties, lai visas izvēles vienas izlozes ietvaros būtu atšķirīgas.

Vai rīks atceras manus rezultātus, un vai tas ir bez maksas?

Sadaļa „Vēsture“ saglabā pēdējās 10 izlozes jūsu pārlūkprogrammā, tāpēc varat atjaunot, nokopēt vai izdzēst iepriekšējo rezultātu un, ja nepieciešams, pilnībā notīrīt vēsturi. Rīks ir pilnīgi bez maksas, bez reģistrācijas, un tā kā dati netiek pārraidīti, mēs nevarētu redzēt vai saglabāt jūsu izložu rezultātus pat tad, ja to vēlētos.