Tilfeldig velger

Lim inn en hvilken som helst liste — navn, oppgaver eller ideer — og la velgeren trekke rettferdig. Hver trekning skjer i nettleseren din, slik at listen aldri forlater enheten din.

Trykk på Generer
Skilletegnet oppdages automatisk, men du kan velge et manuelt nedenfor.
Avanserte innstillinger

Trenger du å trekke en vinner i en konkurranse, velge hvilken elev som skal svare, eller avgjøre hvem som tar oppvasken? Denne gratis, nettbaserte tilfeldige velgeren trekker rettferdig fra hvilken som helst liste du limer inn. Legg inn oppføringene dine i feltet «Elementer» — én per linje, eller separert med komma — still inn hvor mange du vil ha med «Antall», og trykk på «Generer». En liste krever minst to oppføringer og rommer opptil 1000, der hver kan være opptil 200 tegn lang.

Hvert valg skjer direkte i nettleseren din ved hjelp av Web Crypto API (crypto.getRandomValues), som gir kryptografisk sikre tilfeldige verdier fra operativsystemets underliggende prosesser for tilfeldighet. Listen din blir aldri sendt til en server, aldri loggført, og aldri sett av oss — og det er viktigere her enn på de fleste andre velgere, fordi det folk limer inn som oftest er en kundeliste, klasseliste eller en oversikt over kolleger. Knappen «Last fra fil» opprettholder samme løfte: nettleseren leser filen og fyller feltet lokalt, uten at noe lastes opp.

Alternativene er laget for de listene folk faktisk har. «Skilletegn» står på «Automatisk», som selv skiller mellom linjeskift og komma, slik at en liste kopiert fra et regneark, en chat eller et dokument fungerer uten at du må formatere den på nytt. Lås den til «Linjeskift», «Komma» eller «Mellomrom» hvis dataene dine blander formater — og merk at «Mellomrom» alltid er et bevisst valg og aldri automatisk, ettersom oppføringer som fulle navn inneholder mellomrom, og hvis man automatisk delte dem opp, ville det ødelagt flere lister enn det fikset. «Antall» bestemmer hvor mange oppføringer som skal trekkes, fra 1 til 100. Skal du trekke tre vinnere blant 200 deltakere? Lim inn deltakerne, sett «Antall» til 3, og trykk på «Generer». To innstillinger gjelder kun når antallet er 2 eller mer, og er grået ut inntil da: «Ingen duplikater», som avgjør om den samme oppføringen kan trekkes to ganger, og «Utdataformat», som bestemmer hvordan de valgte elementene separeres — «Hver på en ny linje», «Mellomromseparert» eller «Kommaseparert».

En rekke knapper inne i feltet «Elementer» lar deg gjøre endringer du ellers måtte gjort et annet sted. «Last fra fil» henter en liste direkte fra en ren tekstfil eller CSV-fil. «Bland» endrer rekkefølgen på oppføringene i feltet, «Sorter» ordner dem alfabetisk med tall i naturlig rekkefølge (et nytt klikk snur rekkefølgen), og «Tøm» fjerner alt i feltet. Knappen «Fyll med eksempeldata» legger inn en kort eksempelliste slik at du kan teste velgeren med ett klikk, mens «Utvid for å passe innhold» drar ut feltet for å vise en lang liste i sin helhet, og «Skjul til standardstørrelse» folder det tilbake. Under resultatet kopierer «Kopier alt» alle valgte elementer til utklippstavlen din, «Lagre til fil» lagrer dem til datamaskinen, og «Historikk» beholder de siste 10 trekningene i nettleseren din, slik at et tidligere resultat bare er ett klikk unna.

Hvordan gjøres egentlig trekningen? Når du trykker på «Generer», ber siden nettleseren om tilfeldige verdier via crypto.getRandomValues og bruker disse for å velge posisjoner i listen din, i stedet for å gå gjennom en pseudo-tilfeldig JavaScript-funksjon som Math.random(). Å gjøre en rå 32-bits verdi om til en posisjon er der mange velgere i stillhet gjør feil: å ta verdien modulo lengden på listen er den opplagte metoden, og også den som skaper skjevhet, for med mindre listelengden går nøyaktig opp i 2^32, vil oppføringer nær starten av listen dukke opp litt oftere enn de andre. Den svakheten kalles modulo-skjevhet (modulo bias), og den er målbar fremfor teoretisk. Denne velgeren kaster i stedet enhver verdi som overstiger det høyeste eksakte multiplumet av listelengden, og trekker på nytt — en teknikk kalt forkastelsessampling (rejection sampling). Det koster noen få ekstra trekk, men gir deg en nøyaktig garanti i stedet for en tilnærming. Posisjon i listen endrer ingenting: den første og den siste oppføringen har nøyaktig samme sannsynlighet i hver eneste trekning.

«Ingen duplikater» skiller mellom to genuint forskjellige typer trekninger, og statistikkfaget har et navn for begge. Når den er på, blander velgeren en kopi av listen din med Fisher-Yates-algoritmen og plukker oppføringene fra toppen — det samme som å trekke lapper fra en hatt uten å legge dem tilbake, slik at ingen blir valgt to ganger og enhver gruppe av den størrelsen er like sannsynlig. Det kalles trekning uten tilbakelegging (sampling without replacement), og det er det du ønsker for vinnere, lag og tur-rekkefølge. Når den er av, gjøres hvert valg uavhengig av hele listen, slik at den samme oppføringen kan trekkes mer enn én gang — trekning med tilbakelegging (sampling with replacement), som er det du vil ha når alle forblir valgbare i hver runde, som ved gjentatte loddtrekninger eller statistiske stikkprøver. Ingen av metodene er mer rettferdig enn den andre; de besvarer bare ulike spørsmål.

En rettferdig trekning skal ikke se rettferdig ut. Trekk fem navn av ti, og du vil jevnlig se to valg som sto ved siden av hverandre i den opprinnelige listen, eller det samme navnet to ganger på rad når duplikater er tillatt, og alt dette er helt ordinært. Hver trekning er uavhengig: tidligere valg har ingen som helst påvirkning på de senere, og ingen har noensinne en seier «til gode». Instinktet som påstår det motsatte er gamblerens feilslutning (gambler's fallacy), og det er det samme instinktet som gjør oss dårlige til å velge tilfeldig på egen hånd — blir vi bedt om å velge tilfeldig, unngår vi den første og den siste oppføringen, vi unngår å repetere et navn, og vi sprer valgene våre langt jevnere enn det tilfeldigheten noen gang gjør. Et resultat som ser mistenkelig ryddig ut, er fingeravtrykket til et menneske; ekte tilfeldighet skaper klumper.

Hvorfor velge denne tilfeldige velgeren?

Tilfeldig trekning dukker opp overalt hvor et valg må tåle å bli stilt spørsmål ved. Lærere i Norge velger ut elever uten favorisering og deler en klasse inn i prosjektgrupper. Streamere og markedsførere trekker vinnere av giveaways foran et publikum som må tro på resultatet. Ledere deler ut oppgavene ingen melder seg frivillig til, og team bestemmer rekkefølgen på presentasjoner eller hvem som har bakvakt. Forskere trekker et tilfeldig utvalg av poster for gjennomgang. Familier gjør slutt på diskusjonen om hva man skal se på, og en sulten gjeng velger restaurant. Fellesnevneren er et valg som hvem som helst kan forklare i etterkant: trekningen bruker kryptografisk tilfeldighet, den skjer i sin helhet på enheten din, og «Historikk» beholder resultatet hvis noen spør om det senere.

Denne velgeren har noen få ærlige begrensninger som er verdt å vite om. Den kan ikke trekke flere unike oppføringer enn det listen din inneholder — tre vinnere krever minst tre navn — og den stopper ved 1000 oppføringer på 200 tegn hver, med opptil 100 valg i én trekning. «Bland» og «Sorter» fungerer linje for linje, så en kommaseparert liste som er limt inn på én linje, blir først omorganisert når den er delt opp til én oppføring per linje; og begge disse knappene endrer rekkefølgen i feltet, men ikke i selve trekningen, som er like rettferdig uansett hvilken rekkefølge oppføringene dine står i. Hver oppføring har også nøyaktig samme vekt, så i en trekning der ett navn skal telle dobbelt, må det navnet føres opp to ganger. Innenfor disse grensene er garantien sterk — hver eneste oppføring i listen din har nøyaktig samme sjanse, i hver eneste trekning.

FAQ

Hvordan trekker jeg et tilfeldig navn fra en liste?

Lim inn navnene i feltet «Elementer» — ett per linje, eller separert med komma eller mellomrom — la «Antall» stå på 1 og trykk på «Generer». Ett navn trekkes umiddelbart. For flere navn samtidig, øker du «Antall» til det du trenger.

Er valget virkelig rettferdig?

Ja. Hvert valg bruker nettleserens Web Crypto API (crypto.getRandomValues) sammen med forkastelsessampling (rejection sampling), noe som fjerner modulo-skjevheten en enklere implementering ville introdusert. Hver oppføring har nøyaktig samme sannsynlighet uavhengig av posisjonen i listen, og når man trekker flere unike oppføringer brukes en Fisher-Yates-stokking, slik at enhver gruppe av den størrelsen også er like sannsynlig.

Blir listen min lastet opp til serveren deres?

Nei. Hele trekningen kjøres lokalt i nettleseren din: listen, valgene og historikken forlater aldri enheten din, så navn, e-poster eller en hvilken som helst privat liste er trygg å lime inn. «Last fra fil» er også lokal — nettleseren din leser filen selv, og ingenting blir lastet opp.

Kan jeg lime inn en liste separert med komma eller mellomrom i stedet for ett element per linje?

Ja. «Skilletegn» er satt til «Automatisk», som selv kan skille mellom linjeskift og komma, slik at en liste kopiert fra et regneark, en chat-melding eller et dokument fungerer slik den er. En mellomromseparert liste krever ett ekstra steg — sett «Skilletegn» til «Mellomrom» — fordi oppføringer som fulle navn selv inneholder mellomrom og aldri deles automatisk på dem. Lås «Skilletegn» til «Linjeskift» eller «Komma» hvis dataene dine blander formater.

Hva gjør «Ingen duplikater»-bryteren?

Med «Ingen duplikater» på, er hver oppføring som trekkes ulik — som å trekke lapper fra en hatt uten å legge dem tilbake, som er det du vil ha for vinnere av premier eller lag. Med den av kan samme oppføring velges mer enn én gang, noe statistikere kaller trekning med tilbakelegging.

Hvorfor er kontrollene for «Ingen duplikater» og «Utdataformat» grået ut?

Fordi begge kun gjelder når du trekker mer enn én oppføring, slik verktøytipset ved siden av dem sier: «Gjelder kun hvis antallet er større enn 1.» Øk «Antall» til 2 eller høyere, så blir begge tilgjengelige; ved antall 1 er det ingenting å duplisere og ingenting å separere.

Hva gjør alternativet for «Utdataformat»?

Det bestemmer hvordan flere valg vises og kopieres: «Hver på en ny linje», «Mellomromseparert» for en rask chat-melding, eller «Kommaseparert» for å lime inn i et regneark eller et script. Det blir tilgjengelig når «Antall» er 2 eller mer.

Hva gjør knappene for «Bland» og «Sorter»?

«Bland» endrer rekkefølgen på oppføringene inne i feltet «Elementer», og «Sorter» ordner dem alfabetisk med tall i naturlig rekkefølge — et nytt klikk snur rekkefølgen. Begge endrer hvordan listen din er skrevet, ikke hvordan trekningen fungerer: velgeren er like rettferdig uansett hvilken rekkefølge oppføringene står i.

Hvor mange elementer kan listen inneholde, og hvor mange kan jeg velge på én gang?

Listen kan inneholde fra 2 til 1000 oppføringer, hver på opptil 200 tegn, og én trekning gir opptil 100 valg. Tomme linjer og omkringliggende mellomrom blir ignorert, slik at en liste limt inn fra et regneark eller et dokument fungerer som den er.

Er den egnet til å velge vinnere for giveaways eller loddtrekninger?

Ja, og dette er et av de vanligste bruksområdene. Lim inn deltakerne, sett «Antall» til antall premier, behold «Ingen duplikater» på slik at ingen vinner to ganger, og trykk på «Generer». Fordi trekningen bruker kryptografisk sikker tilfeldighet og kjører i sin helhet på enheten din, er prosessen lett å forklare, og «Historikk» beholder resultatet i tilfelle en deltaker stiller spørsmål ved det senere.

Kan jeg bruke den til å dele folk inn i lag?

Ja. Sett «Antall» til størrelsen på det første laget og trykk på «Generer» — de valgte navnene utgjør lag én. Fjern dem fra listen og gjenta for neste lag. Behold «Ingen duplikater» på slik at ingen havner på to lag samtidig.

Hvorfor kom det samme navnet opp to ganger på rad?

Fordi uavhengige trekninger gjentar seg, og det er slik tilfeldighet ser ut. Hver trekning ignorerer enhver trekning før den, så i en liste med ti navn har det samme navnet som trekkes to ganger på rad en 1 av 10 sjanse hver gang — det er vanlig, ikke en feil. Skru på «Ingen duplikater» hvis du trenger at hvert valg innenfor én trekning skal være ulikt.

Husker velgeren valgene mine, og er det gratis?

«Historikk» beholder de siste 10 trekningene i din egen nettleser, slik at du kan gjenopprette, kopiere eller slette et tidligere resultat, og tømme alt når du vil. Verktøyet er helt gratis og krever ingen registrering, og siden ingenting overføres, kunne vi ikke sett eller lagret valgene dine selv om vi ønsket det.