CodeKitHub
Generatorværktøjer

Gratis liste-randomizer

Senest opdateret:

Indsæt en liste — navne, opgaver, lodtrækningsdeltagere, hvad som helst — ét element pr. linje, og bland den til en fair, tilfældig rækkefølge med et ordentligt Fisher-Yates-shuffle. Slå vinderudtrækningstilstand til for kun at trække N tilfældige elementer — nyttigt til at kåre en giveaway-vinder eller tildele en tilfældig rækkefølge uden at afsløre hele den blandede liste.

Hvad er dette værktøj?

En liste-randomizer omarrangerer et sæt elementer til en tilfældig rækkefølge, eller trækker en tilfældig delmængde fra det. Det svære er at gøre det uden bias: en naiv metode som at sortere et array med en tilfældig sammenligningsfunktion giver en skæv fordeling, hvor visse rækkefølger er langt mere sandsynlige end andre.

Dette værktøj bruger Fisher-Yates- (Durstenfeld-) shuffle-algoritmen, standardmetoden til en beviseligt ensartet tilfældig permutation — enhver mulig rækkefølge af din liste er lige sandsynlig.

Hvorfor bruge det?

  • Ægte ubiased blanding — Fisher-Yates, ikke det almindelige sort(() => Math.random() - 0.5)-antimønster, der forskyder resultaterne.
  • Vinderudtrækningstilstand: træk præcis N tilfældige elementer i stedet for at blande hele listen — ideelt til lodtrækninger og giveaways.
  • Valgfri fjernelse af dubletter før blanding, til lister der kan have utilsigtede gentagelser.
  • Fungerer med enhver tekst — navne, opgaver, billetter, præmier — ét element pr. linje.
  • Privat: blandingen sker helt i din browser, intet uploades.

Sådan bruger du det

  1. Indsæt din liste i feltet, ét element pr. linje.
  2. Sæt eventuelt kryds i "fjern dubletter før blanding", hvis listen kan indeholde gentagelser.
  3. For en fuld omrokering, klik bare Bland. For at udtrække vindere, sæt kryds i N-elementer-indstillingen og angiv, hvor mange der skal trækkes.
  4. Kopiér resultatet — klik Bland igen når som helst for en ny tilfældig rækkefølge eller en ny trækning.

Eksempel

Input

Alice
Bob
Charlie
Diana
Ethan

Output

En tilfældigt omarrangeret liste, f.eks. Charlie, Ethan, Alice, Diana, Bob — anderledes hver gang du klikker Bland.

Med vinderudtrækningstilstand sat til 2 kunne det samme input i stedet give bare Ethan og Alice — et tilfældigt 2-elements udtræk, ikke et 2-elements udsnit af én blandet rækkefølge.

Hvorfor et naivt shuffle giver skæve resultater

sort(() => Math.random() - 0.5) er et almindeligt trick, der ser korrekt ud, men ikke er det: det er afhængigt af, at sorteringsalgoritmen kalder sammenligningsfunktionen et bestemt antal gange i et bestemt mønster, og virkelige sorteringsimplementeringer garanterer ikke det. Den praktiske effekt er et shuffle, hvor bestemte rækkefølger optræder oftere end andre — subtilt nok til at passere et flygtigt blik, men statistisk målbart over mange kørsler.

Fisher-Yates omgår hele problemet: i stedet for at bede en sorteringsalgoritme om at producere tilfældighed indirekte, bytter den direkte hver position med en tilfældig resterende position præcis én gang, hvilket er beviseligt ensartet uanset det underliggende sprogs sorteringsimplementering.

Tilfældig Talgenerator · UUID-generator

Ofte stillede spørgsmål

Hvorfor ikke bare bruge array.sort(() => Math.random() - 0.5)?

Den one-liner er et velkendt antimønster: JavaScripts sort() garanterer ikke, at hvert par elementer sammenlignes det samme antal gange, så den resulterende rækkefølge er målbart forskudt mod visse permutationer — nogle elementer ender med at være mere tilbøjelige til at havne nær starten eller slutningen, end ægte tilfældighed ville give. Fisher-Yates undgår dette helt ved sin konstruktion, og det er den algoritme, dette værktøj faktisk implementerer.

Er blandingsrækkefølgen virkelig ubiased?

Ja. Fisher-Yates gennemgår listen én gang og bytter ved hvert trin det nuværende element med et jævnt fordelt tilfældigt element fra den resterende ublandede del. Dette er matematisk bevist til at give enhver mulig rækkefølge med lige stor sandsynlighed, givet en god kilde til tilfældighed (JavaScripts Math.random()).

Hvad er forskellen på blanding og vinderudtrækningstilstand?

Blandingstilstand omarrangerer alle elementer i din liste og viser dem alle, blot i en ny rækkefølge. Vinderudtrækningstilstand trækker kun N elementer tilfældigt og viser kun dem — nyttigt når du vil udvælge et fast antal vindere eller stikprøver uden at afsløre en hel omarrangeret liste.

Kan jeg bruge dette til en rigtig præmietrækning eller lodtrækning?

Ja, til uformelle giveaways og trækninger fungerer dette godt, da tilfældigheden er ægte ensartet. For en juridisk reguleret konkurrence med pengepræmier bør du tjekke dine lokale regler — nogle jurisdiktioner kræver en specifik, kontrollerbar trækningsproces.

Ændrer fjernelse af dubletter min oprindelige liste?

Nej — dubletfjernelse påvirker kun det blandede output, og kun når afkrydsningsfeltet er slået til. Din inputliste forbliver nøjagtig som du skrev den, så du kan slå indstillingen til og fra og blande igen uden at skrive alt om.

Relaterede værktøjer