Tilfældig udvælger

Indsæt en hvilken som helst liste — navne, opgaver eller idéer — og lad den tilfældige udvælger trække retfærdigt. Hver udtrækning kører lokalt i din browser, så din liste forlader aldrig din enhed.

Tryk på Generér for at få resultatet
Adskilleren registreres automatisk, men du kan vælge den nedenfor.
Avancerede indstillinger

Har du brug for at finde en vinder af en konkurrence, vælge en elev til at svare eller afgøre, hvem der tager opvasken? Denne gratis, online tilfældige udvælger trækker retfærdigt fra enhver liste, du indsætter. Sæt dine elementer ind i feltet »Elementer« — en på hver linje, eller adskilt af kommaer — indstil, hvor mange du vil have med »Antal«, og tryk på »Generér«. En liste kræver mindst to elementer og kan rumme op til 1000, som hver må være op til 200 tegn lange.

Hver udtrækning foretages direkte i din browser ved hjælp af Web Crypto API (crypto.getRandomValues), som leverer kryptografisk stærke tilfældige værdier fra din browsers underliggende system. Din liste sendes aldrig til en server, logges ikke og bliver aldrig set af os — og det betyder mere her end på de fleste generatorer, da det folk indsætter typisk er en kundeliste, klasselister eller kollegers navne. »Indlæs fra fil« holder det samme løfte: din browser læser filen og udfylder feltet lokalt, uden at noget uploades nogen steder.

Mulighederne er skabt til de lister, folk faktisk har. »Adskiller« står på »Automatisk«, som selv kender forskel på linjeskift og kommaer og finder ud af, hvad din liste bruger, så en liste kopieret fra et regneark, en besked eller et dokument fungerer uden omformatering. Lås den fast til »Linjeskift«, »Komma« eller »Mellemrum« når dine data blander formaterne — og bemærk, at »Mellemrum« altid er et bevidst valg og aldrig automatisk, da for eksempel fulde navne indeholder deres egne mellemrum, og en automatisk opdeling af disse ville ødelægge flere lister, end den gavnede. »Antal« bestemmer, hvor mange elementer der trækkes, fra 1 til 100. Skal der trækkes tre vindere blandt 200 deltagere? Indsæt deltagerne, sæt »Antal« til 3, og tryk på »Generér«. To kontroller gælder først, når antallet er 2 eller mere, og forbliver deaktiverede indtil da: »Uden dubletter«, som afgør, om det samme element kan trækkes to gange, og »Outputformat«, som bestemmer, hvordan valgene adskilles — »Hver på en ny linje«, »Adskilt med mellemrum« eller »Adskilt med komma«.

En række knapper inde i feltet »Elementer« udfører den redigering, du ellers ville lave et andet sted. »Indlæs fra fil« trækker en liste direkte ud af en almindelig tekst- eller CSV-fil. »Bland« ændrer rækkefølgen på elementerne i feltet, »Sorter« arrangerer dem alfabetisk, hvor tal ordnes naturligt (og et ekstra klik vender rækkefølgen om), og »Ryd« tømmer feltet helt. »Udfyld med eksempeldata« indsætter en kort prøveliste, så du kan afprøve udvælgeren med ét klik, mens »Udvid for at passe til indhold« folder feltet ud for at vise en lang liste i sin helhed, og »Skjul til standardstørrelse« folder det tilbage igen. Under resultatet kopierer »Kopiér alt« hver udtrækning til din udklipsholder, »Gem som fil« gemmer dem lokalt, og »Historik« gemmer dine seneste 10 trækninger i din browser, så et tidligere resultat kun er et klik væk.

Hvordan foregår udvælgelsen egentlig? Når du trykker på »Generér«, beder siden browseren om tilfældige værdier via crypto.getRandomValues og bruger dem til at vælge positioner i din liste, frem for at bruge en pseudotilfældig JavaScript-funktion som Math.random(). At omdanne en rå 32-bit værdi til en position er dér, hvor udvælgere ofte fejler i det skjulte: at tage værdien modulo listens længde er den mest oplagte tilgang, men den er skæv, for medmindre længden går perfekt op i 2^32, vil elementerne forrest på listen blive valgt en anelse oftere end resten. Denne svaghed kaldes modulo-bias, og den kan måles frem for blot at være teoretisk. Denne udvælger kasserer i stedet enhver værdi, der overstiger det største eksakte multiplum af listens længde, og trækker igen — en teknik kaldet rejection sampling (forkastelsesmetode). Det koster et par ekstra trækninger, men giver en præcis garanti i stedet for en omtrentlig. Placeringen på listen ændrer intet: det første og det sidste element har nøjagtig den samme sandsynlighed ved hver eneste trækning.

Indstillingen »Uden dubletter« adskiller to reelt forskellige typer trækninger, og statistikken har et navn for hver. Med den aktiveret, blander udvælgeren en kopi af din liste ved hjælp af Fisher-Yates-algoritmen og tager elementerne fra toppen — præcis ligesom at trække lodsedler fra en hat uden at lægge dem tilbage, så ingen vælges to gange, og hver gruppe af den størrelse har samme sandsynlighed. Det er stikprøveudtagning uden tilbagelægning (sampling without replacement), og det er dét, du har brug for til præmievindere, hold og turrækkefølge. Er den deaktiveret, foretages hvert valg uafhængigt af hele listen, så det samme element kan dukke op mere end én gang — stikprøveudtagning med tilbagelægning (sampling with replacement), hvilket er det, du ønsker, når alle forbliver valgbare i hver runde, som ved gentagne kast eller en hurtig statistisk stikprøve. Ingen af tilstandene er mere retfærdige end den anden; de løser bare forskellige opgaver.

En retfærdig lodtrækning skal ikke se retfærdig ud. Træk fem navne ud af ti, og du vil regelmæssigt se to udvalgte, der stod ved siden af hinanden på den oprindelige liste, eller det samme navn to gange i træk, hvis dubletter er tilladt, og hvert eneste af disse tilfælde er helt almindeligt. Hver trækning er uafhængig: tidligere træk har ingen indflydelse overhovedet på de efterfølgende, og ingen »skylder« nogensinde at vinde. Instinktet, der insisterer på det modsatte, er spillersyndromet (gambler's fallacy), og det er det samme instinkt, der gør os dårlige til selv at vælge tilfældigt — bedt om at vælge tilfældigt, undgår vi det første og det sidste element, undgår at gentage et navn, og spreder vores valg langt mere jævnt end tilfældigheden nogensinde gør. Et resultat, der ser mistænkeligt pænt ud, er menneskets fingeraftryk; ægte tilfældighed skaber klynger.

Hvorfor benytte denne tilfældige udvælger?

Tilfældig udvælgelse dukker op overalt, hvor et valg skal kunne overleve at blive draget i tvivl. Lærere i Danmark udpeger elever uden at favorisere nogen, og opdeler klassen i projektgrupper. Streamere og markedsføringsfolk trækker vindere foran et publikum, der skal have tillid til resultatet. Ledere uddeler de opgaver, som ingen frivilligt melder sig til, og teams afgør præsentationsrækkefølgen eller hvem der har vagten. Forskere udtrækker en tilfældig stikprøve af journaler til revision. Familier afslutter diskussionen om, hvad de skal se i tv, og en sulten vennegruppe vælger restauranten. Den røde tråd er et valg, som alle kan forklare bagefter: trækningen bruger kryptografisk tilfældighed, den foregår udelukkende på din enhed, og din »Historik« gemmer resultatet, hvis nogen spørger til det senere.

Udvælgeren har nogle få ærlige begrænsninger, som er værd at kende. Den kan ikke trække flere unikke elementer, end der er på din liste — tre vindere kræver mindst tre navne — og den stopper ved 1000 elementer af hver 200 tegn med op til 100 valg i én trækning. Knapperne »Bland« og »Sorter« fungerer linje for linje, så en komma-separeret liste sat ind på én enkelt linje bliver først ændret, når den er delt op med ét element pr. linje; og begge knapper omarrangerer kun feltet og ikke selve trækningen, som er lige retfærdig uanset hvilken rækkefølge dine elementer står i. Hvert element bærer desuden bevidst præcis samme vægt, så en lodtrækning, hvor ét navn skal tælle dobbelt, kræver at det pågældende navn står på listen to gange. Inden for disse grænser er garantien stærk — hvert eneste element på din liste har nøjagtig den samme chance ved hver eneste trækning.

FAQ

Hvordan trækker jeg et tilfældigt navn fra en liste?

Indsæt navnene i feltet »Elementer« — en på hver linje, eller adskilt af kommaer eller mellemrum — lad »Antal« stå på 1 og tryk på »Generér«. Et enkelt navn trækkes med det samme. Skal du bruge flere navne på én gang, hæver du bare »Antal« til det, du har brug for.

Er valget virkelig retfærdigt?

Ja. Hver udtrækning bruger din browsers Web Crypto API (crypto.getRandomValues) sammen med rejection sampling, som fjerner den modulo-bias, en naiv implementering ville medføre. Hvert element har nøjagtig samme sandsynlighed uanset dets placering på listen, og udvælgelsen af flere unikke elementer anvender en Fisher-Yates-blanding, så enhver gruppe af den størrelse også er lige sandsynlig.

Bliver min liste uploadet til jeres server?

Nej. Hele lodtrækningen foregår lokalt i din browser: listen, valgene og historikken forlader aldrig din enhed, så navne, e-mails og enhver privat liste kan trygt indsættes. »Indlæs fra fil« er også lokal — din browser læser selv filen, og intet bliver uploadet.

Kan jeg indsætte en komma- eller mellemrumsopdelt liste i stedet for ét element pr. linje?

Ja. »Adskiller« er indstillet til »Automatisk«, som selv kender forskel på linjeskift og kommaer, så en liste kopieret fra et regneark, en besked eller et dokument fungerer som den er. En liste adskilt med mellemrum kræver et ekstra trin — sæt »Adskiller« til »Mellemrum« — fordi elementer som fulde navne selv indeholder mellemrum og aldrig deles ved dem automatisk. Lås »Adskiller« fast til »Linjeskift« eller »Komma«, hvis dine data blander forskellige formater.

Hvad gør kontakten »Uden dubletter«?

Med »Uden dubletter« slået til, er alle udtrukne elementer forskellige — ligesom at trække lodsedler op af en hat uden at lægge dem tilbage, hvilket er det, du har brug for til præmievindere eller hold. Slås den fra, kan det samme element vælges mere end én gang, hvilket statistikere kalder stikprøveudtagning med tilbagelægning.

Hvorfor er funktionerne »Uden dubletter« og »Outputformat« gråtonede?

Fordi de begge kun gælder, når du trækker mere end ét element, som tippet ved siden af dem siger: »Gælder, når Antal er mindst 2«. Sæt »Antal« til 2 eller højere, så bliver begge tilgængelige; ved værdien 1 er der intet at duplikere og intet at adskille.

Hvad gør indstillingen »Outputformat«?

Den bestemmer, hvordan flere valg vises og kopieres: »Hver på en ny linje«, »Adskilt med mellemrum« til en hurtig chatbesked, eller »Adskilt med komma« til at indsætte i et regneark eller et script. Den bliver tilgængelig, så snart »Antal« er 2 eller mere.

Hvad gør knapperne »Bland« og »Sorter«?

»Bland« ændrer rækkefølgen af elementerne inde i feltet »Elementer«, og »Sorter« ordner dem alfabetisk med tal sorteret naturligt — et fornyet klik på den vender rækkefølgen. Begge ændrer kun på, hvordan din liste står skrevet, ikke på hvordan udtrækningen fungerer: udvælgeren er lige retfærdig uanset i hvilken rækkefølge elementerne står.

Hvor mange elementer kan listen indeholde, og hvor mange kan jeg trække på én gang?

Listen kan rumme fra 2 til 1000 elementer, hver på op til 200 tegn, og én trækning returnerer op til 100 valg. Tomme linjer og ekstra mellemrum i kanten ignoreres, så en liste indsat fra et regneark eller dokument fungerer lige som den er.

Egner den sig til at finde vindere i lodtrækninger og konkurrencer?

Ja, og det er et af de mest almindelige formål. Indsæt deltagerne, sæt »Antal« til mængden af præmier, behold »Uden dubletter« aktiveret, så ingen vinder to gange, og tryk på »Generér«. Fordi lodtrækningen bruger kryptografisk sikker tilfældighed og kører fuldstændig på din enhed, er processen let at forklare, og din »Historik« gemmer resultatet, hvis en deltager stiller spørgsmålstegn ved det senere.

Kan jeg bruge den til at inddele folk i hold?

Ja. Sæt »Antal« til størrelsen på det første hold og tryk på »Generér« — de udtrukne navne udgør hold ét. Fjern dem fra listen og gentag for det næste hold. Lad indstillingen »Uden dubletter« være tændt, så ingen ender på to hold på én gang.

Hvorfor kom det samme navn frem to gange i træk?

Fordi uafhængige trækninger gentager sig, og det er netop sådan tilfældighed ser ud. Hver lodtrækning ignorerer alle tidligere trækninger fuldstændigt, så på en liste med ti navne er der hver gang en 1 til 10-chance for, at det samme navn bliver udtrukket to gange i træk — det er helt normalt, ikke en fejl. Slå »Uden dubletter« til, hvis du har brug for, at alle valg inden for én trækning skal være forskellige.

Husker udvælgeren mine trækninger, og er den gratis?

Din »Historik« gemmer dine seneste 10 trækninger i selve browseren, så du kan gendanne, kopiere eller slette et tidligere resultat og rydde det hele, præcis når du vil. Værktøjet er fuldstændig gratis uden nogen oprettelse, og da intet overføres, ville vi ikke kunne se eller gemme dine valg, selv hvis vi ønskede det.