CodeKitHub
Generatorværktøjer

Navnetrækning

Senest opdateret:

At trække navne til en julegaveleg i hånden løber ind i et rigtigt matematisk problem: en ren tilfældig blanding kan ved et uheld tildele nogen sig selv, og at trække om igen indtil det "ser rigtigt ud" er reelt ikke længere tilfældigt. Dette værktøj løser det ordentligt — indtast alles navne, og det beregner en derangement (en blanding med den matematiske garanti, at ingen lander på sit eget navn), og skjuler derefter hvert resultat bag en tryk-for-at-afsløre-knap, så alle kan tjekke deres egen tildeling på en delt skærm uden at se andres.

Hvad er dette værktøj?

En derangement er et specifikt matematisk begreb: en permutation (omordning) af et sæt, hvor intet element ender på sin oprindelige plads. Anvendt på en gaveleg betyder det at blande alles navne i en ny rækkefølge, så ingen parres med sig selv — netop det krav, en fair Secret Santa-trækning har brug for, og netop det, en naiv `array.sort(() => Math.random() - 0.5)`-blanding IKKE garanterer af sig selv.

Værktøjet genererer en derangement ved gentagne gange at blande listen med en tilfældiggjort algoritme og tjekke selvtildelingsbetingelsen, og bruger `crypto.getRandomValues()` som den underliggende tilfældighedskilde i stedet for `Math.random()` — samme kryptografisk sikre kilde som denne sides Password Generator og Random Letter Generator.

Afsløringsknap-designet løser et andet, meget praktisk problem ved at trække navne som gruppe: at vise hver tildeling på skærmen på én gang ødelægger overraskelsen for alle samtidig. At skjule hver persons resultat bag sin egen knap gør, at én enhed kan sendes rundt (eller en skærm deles), så hver person kun tjekker sit eget navn.

Hvorfor bruge det?

  • Det er julefrokosten på arbejdet, og nogen huskede lige, at ingen har sat en julegaveleg op — indtast de 14 navne fra teamchatten og træk parrene under mødet, før folk spreder sig til frokost.
  • Familiens gruppechat kan ikke blive enige om, hvem der køber til hvem i år, og halvdelen af gruppen vil helst ikke downloade endnu en app kun til en gavetrækning — åbn dette på én telefon, send den rundt og lad hver person trykke på sin egen afsløringsknap.
  • Nogen forlod gruppen to dage før byttet, og sidste års regneark er forkert nu — indsæt den opdaterede navneliste igen og træk om på få sekunder i stedet for manuelt at rette parringer.
  • Du prøvede en hurtig `sort(() => Math.random() - 0.5)`-blanding til en gaveleg på arbejdet, og nogen blev tildelt sig selv — dette værktøj findes netop for at udelukke det med en garanteret derangement i stedet for en heldig genblanding.
  • Du vil have afsløringen til at foregå live på et videoopkald uden at nogen andens tildeling blinker på skærmen — del din skærm, og lad hver person sige til, når du skal klikke på deres række, så kun de ser den.

Sådan bruger du det

  1. Skriv hver deltagers navn på sin egen linje — mindst 3 forskellige navne.
  2. Klik på "Træk par" — værktøjet beregner en gyldig derangement, så ingen parres med sig selv.
  3. Hver deltagers række viser navnet med et skjult resultat — send enheden rundt eller del skærmen, og lad hver person klikke på sin egen "Tryk for at afsløre"-knap for at se, hvem de skal give en gave.
  4. Klik på afsløring igen for at skjule det, når nogen har tjekket deres resultat, så skærmen er klar til næste person.

Eksempel

Input

Alice, Bob, Carol, Dave

Output

Alice → Carol, Bob → Dave, Carol → Bob, Dave → Alice

Hver kørsel giver en anden gyldig derangement — dette er ét eksempel på et resultat. Læg mærke til, at ingen tildeles sig selv, hvilket er det ene hårde krav, en rigtig Secret Santa-trækning har brug for, og som en simpel tilfældig blanding ikke garanterer.

Derangement vs. en almindelig tilfældig blanding

En almindelig blanding og en derangement ligner hinanden, men kun den ene er faktisk sikker til en gaveleg.

MetodeKan tildele nogen sig selv?Fair at trække om, indtil det 'ser rigtigt ud'?
Almindelig tilfældig blandingJa — en reel mulighed, især i små grupperNej — manuelt at afvise dårlige resultater forvrider udfaldet
Derangement (dette værktøj)Nej — matematisk udelukket i selve konstruktionenIkke relevant — ethvert gyldigt resultat opfylder allerede kravet

Relaterede værktøjer

For andre tilfældige trækninger og generatorer, prøv disse værktøjer.

→ Fantasy Name Generator · Random Number Generator

At køre en gruppetrækning uden at ødelægge den for dig selv

Det trickyeste ved en Secret Santa-trækning er ikke tilfældigheden — det er at sikre, at den, der styrer trækningen, ikke ved et uheld ser alles tildeling under opsætningen. Et par vaner gør det lettere.

  • Skriv navnelisten og klik på "Træk par" uden selv at rulle gennem resultaterne — giv enheden direkte til den første deltager i stedet for at forhåndsvise, hvem der fik hvem.
  • Hvis du er arrangør og også deltager, bed en anden om at holde enheden til din egen afsløring, eller vent til sidst, så ingen føler sig presset til at se på, mens du tjekker.
  • For en fjerngruppe, del skærmen, men hold musemarkøren væk fra afsløringsknapperne — fortæl, hvis tur det er, og lad hver person klikke på sin egen række over stemme eller chat.
  • Hvis gruppen er stor, gå i samme rækkefølge som en siddeplan eller deltagerliste, så ingen springes over eller dobbelttjekkes ved et uheld.

Ofte stillede spørgsmål

Hvad sker der, hvis et navn indtastes to gange?

Værktøjet kræver, at alle navne er unikke, før det trækker — opdager det en duplikeret linje, beder det dig om at rette listen først, da to deltagere med identisk navn ville gøre det umuligt at skelne deres resultater.

Kan nogen trække sit eget navn?

Nej — værktøjet beregner specifikt en derangement, en blanding med den matematiske egenskab, at intet element (person) ender tildelt sin egen oprindelige plads. Den garanti håndhæves af algoritmen, ikke overladt til tilfældet, som en almindelig tilfældig blanding ville gøre.

Hvad er det mindste antal personer, der kræves?

Tre. Med kun to personer er en derangement umulig, uden at de blot tildeles hinanden hver gang, hvilket ikke er meningsfuldt tilfældigt, så værktøjet kræver mindst tre deltagere.

Hvordan holder vi resultaterne private, hvis vi alle kigger på den samme skærm?

Hver deltagers resultat er skjult bag sin egen "Tryk for at afsløre"-knap i stedet for at blive vist på én gang. Send enheden (eller del skærmen) til hver person efter tur, lad dem afsløre og notere kun deres egen række, og klik derefter igen for at skjule den, før den sendes videre.

Sendes navnene eller trækningsresultatet til en server?

Nej. Alt — at læse navnene, beregne derangementet og vise afsløringsknapperne — foregår udelukkende i din browser. Intet uploades, og lukker du fanen, ryddes alt, så der ikke er nogen trækningshistorik tilbage nogen steder, der kan ødelægge overraskelsen.

Kan jeg udelukke bestemte par, som par der ikke bør købe til hinanden?

Ikke i øjeblikket — derangementet garanterer kun, at ingen tildeles sig selv, det udelukker ikke andre bestemte parringer som ægtefæller eller søskende. Hvis det betyder noget for din gruppe, så tjek resultatet og træk manuelt om, hvis en parring, du ville undgå, dukker op.

Hvad sker der, hvis jeg genindlæser eller lukker fanen midt i afsløringen af resultater?

Trækningen går tabt — intet gemmes mellem sideindlæsninger, med vilje, så der ikke er nogen resterende optegnelse, der kan ødelægge overraskelsen senere. Indtast bare navnene igen og træk om; du får en ny (anden) gyldig derangement.

Kan to personer køre separate trækninger og få forskellige resultater for de samme navne?

Ja — hver trækning tilfældiggøres frisk med `crypto.getRandomValues()`, så at indtaste den samme navneliste to gange vil meget sandsynligt give to forskellige gyldige derangementer, ikke den samme parring gentaget.

Er der et maksimalt antal deltagere?

Der håndhæves ingen hård grænse — derangementalgoritmen fungerer på samme måde, uanset om du indtaster 3 eller 30 navne. Meget store grupper kan blot tage lidt længere tid at beregne, selvom det i praksis er umærkeligt for alt under et par hundrede navne.

Påvirker rækkefølgen, jeg skriver navne i, hvem der tildeles hvem?

Nej — blandingen tilfældiggøres uafhængigt af inputrækkefølgen, så at skrive navne alfabetisk, efter siddeplan eller i tilfældig rækkefølge har ingen effekt på trækningens retfærdighed eller resultat.

Relaterede værktøjer