CodeKitHub
Generatorverktyg

Namnlottning

Senast uppdaterad:

Att lotta namn för julklappsbyte för hand stöter på ett riktigt matteproblem: en ren slumpblandning kan av misstag tilldela någon sig själv, och att lotta om tills det "ser rätt ut" är egentligen inte längre slumpmässigt. Det här verktyget löser det ordentligt — skriv in allas namn, så beräknar det en derangemang (en blandning med matematisk garanti att ingen hamnar på sitt eget namn), och döljer sedan varje resultat bakom en tryck-för-att-visa-knapp så att alla kan kolla sin egen lott på en delad skärm utan att se någon annans.

Vad är detta verktyg?

En derangemang är ett specifikt matematiskt begrepp: en permutation (omordning) av en mängd där inget element hamnar på sin ursprungliga plats. Applicerat på ett julklappsbyte innebär det att blanda allas namn i en ny ordning så att ingen paras med sig själv — exakt det krav en rättvis lottning behöver, och exakt det en naiv slumpblandning INTE garanterar av sig själv.

Verktyget genererar en derangemang genom att upprepade gånger blanda listan med en slumpad algoritm och kontrollera villkoret, och använder `crypto.getRandomValues()` som slumpkälla i stället för `Math.random()` — samma kryptografiskt säkra källa som webbplatsens Lösenordsgenerator och Slumpbokstavsgenerator.

Avslöjandeknappen löser ett annat, mycket praktiskt problem med att lotta namn i grupp: att visa alla tilldelningar på skärmen samtidigt förstör överraskningen för alla på en gång. Att dölja varje persons resultat bakom en egen knapp gör att en enhet kan skickas runt (eller en skärm delas) så att var och en bara kollar sitt eget namn.

Varför använda det?

  • Det är julfesten på jobbet och någon kom precis ihåg att ingen ordnat julklappsbyte — skriv in de 14 namnen från gruppchatten och lotta paren under mötet innan alla sprider ut sig till lunch.
  • Familjens gruppchatt kan inte komma överens om vem som köper till vem i år, och halva gruppen vill helst inte ladda ner ännu en app bara för en lottning — öppna det här på en mobil, skicka runt den och låt var och en trycka på sin egen avslöjandeknapp.
  • Någon lämnade gruppen två dagar innan bytet och kalkylbladet från förra året stämmer inte längre — klistra in den uppdaterade namnlistan och lotta om på sekunder i stället för att fixa paren för hand.
  • Du testade en snabb `sort(() => Math.random() - 0.5)`-blandning för ett julklappsbyte på jobbet och någon fick sig själv — det här verktyget finns just för att utesluta det med en garanterad derangemang i stället för en tur-blandning.
  • Du vill att avslöjandet ska ske live på ett videosamtal utan att någon annans tilldelning blinkar på skärmen — dela din skärm och låt var och en säga till när du ska klicka på deras rad så att bara de ser den.

Så använder du det

  1. Skriv in varje deltagares namn på egen rad — minst 3 olika namn.
  2. Klicka på "Lotta par" — verktyget beräknar en giltig derangemang så att ingen paras med sig själv.
  3. Varje deltagares rad visar namnet med ett dolt resultat — skicka runt enheten eller dela skärmen, och låt var och en klicka på sin egen "Tryck för att visa"-knapp för att se vem de ger present till.
  4. Klicka på avslöjandet igen för att dölja det när någon kollat sitt resultat, så att skärmen är redo för nästa person.

Exempel

Inmatning

Alice, Bob, Carol, Dave

Resultat

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

Varje körning ger en annan giltig derangemang — detta är ett exempel på resultat. Lägg märke till att ingen tilldelas sig själv, vilket är det enda hårda kravet en riktig lottning behöver och en enkel slumpblandning inte garanterar.

Derangemang jämfört med en vanlig slumpblandning

En vanlig blandning och en derangemang ser lika ut men bara en av dem är faktiskt säker för ett julklappsbyte.

MetodKan tilldela någon sig själv?Rättvist att lotta om tills det 'ser rätt ut'?
Vanlig slumpblandningJa — en verklig möjlighet, särskilt i små grupperNej — att manuellt avvisa dåliga resultat snedvrider utfallet
Derangemang (detta verktyg)Nej — matematiskt uteslutet från grundenEj tillämpligt — varje giltigt resultat uppfyller redan kravet

Relaterade verktyg

För andra slumplottningar och generatorer, prova dessa verktyg.

→ Fantasy Name Generator · Random Number Generator

Att köra en grupplottning utan att förstöra den för dig själv

Det knepigaste med en julklappslottning är inte slumpen — det är att se till att den som kör lottningen inte råkar se allas tilldelning under upplägget. Några vanor gör det enklare.

  • Skriv in namnlistan och klicka på "Lotta par" utan att själv bläddra igenom resultatet — lämna enheten direkt till första deltagaren i stället för att förhandsgranska vem som fick vem.
  • Om du är arrangör och också deltagare, be någon annan hålla i enheten för ditt eget avslöjande, eller vänta till sist så att ingen känner sig stressad av att titta på när du kollar.
  • För en distansgrupp, dela skärmen men håll muspekaren borta från avslöjandeknapparna — berätta vems tur det är och låt var och en klicka på sin egen rad över röst eller chatt.
  • Om gruppen är stor, gå i samma ordning som en sittplan eller mötesdeltagarlista så att ingen missas eller dubbelkollas av misstag.

Vanliga frågor

Vad händer om ett namn skrivs in två gånger?

Verktyget kräver att varje namn är unikt innan det lottar — upptäcker det en dubblettrad ber det dig fixa listan först, eftersom två deltagare med identiskt namn skulle göra det omöjligt att skilja deras resultat åt.

Kan någon lotta sitt eget namn?

Nej — verktyget beräknar specifikt en derangemang, en blandning med den matematiska egenskapen att inget element (person) hamnar mappat till sin egen ursprungliga plats. Den garantin upprätthålls av algoritmen, inte lämnad till slumpen som en vanlig slumpblandning skulle göra.

Vad är minsta antal personer som krävs?

Tre. Med bara två personer är en derangemang omöjlig utan att de helt enkelt tilldelas varandra varje gång, vilket inte är meningsfullt slumpmässigt, så verktyget kräver minst tre deltagare.

Hur håller vi resultaten privata om vi alla tittar på samma skärm?

Varje deltagares resultat är dolt bakom sin egen "Tryck för att visa"-knapp i stället för att visas alla samtidigt. Skicka enheten (eller dela skärmen) till varje person i tur och ordning, låt dem avslöja och notera bara sin egen rad, klicka sedan igen för att dölja den innan den skickas vidare.

Skickas namnen eller lottningsresultatet till en server?

Nej. Allt — att läsa namnen, beräkna derangemangen och visa avslöjandeknapparna — sker helt i din webbläsare. Inget laddas upp, och stänger du fliken rensas allt, så det finns ingen lottningshistorik kvar någonstans som kan förstöra överraskningen.

Kan jag utesluta specifika par, som par som inte bör köpa till varandra?

Inte för tillfället — derangemangen garanterar bara att ingen tilldelas sig själv, den utesluter inte andra specifika kombinationer som makar eller syskon. Om det spelar roll för din grupp, kolla resultatet och lotta om manuellt om en kombination du ville undvika dyker upp.

Vad händer om jag laddar om eller stänger fliken mitt under avslöjandet?

Lottningen går förlorad — inget sparas mellan sidladdningar, med avsikt, så det finns ingen kvarvarande post som kan förstöra överraskningen senare. Skriv bara in namnen igen och lotta om; du får en ny (annan) giltig derangemang.

Kan två personer köra separata lottningar och få olika resultat för samma namn?

Ja — varje lottning slumpas nyfriskt med `crypto.getRandomValues()`, så att skriva in samma namnlista två gånger ger med stor sannolikhet två olika giltiga derangemang, inte samma parning upprepad.

Finns det ett maxantal deltagare?

Ingen hård gräns tillämpas — derangemangalgoritmen fungerar likadant oavsett om du skriver in 3 eller 30 namn. Väldigt stora grupper kan bara ta en stund längre att beräkna, men i praktiken är det omärkbart för allt under några hundra namn.

Påverkar ordningen jag skriver namnen i vem som paras med vem?

Nej — blandningen slumpas oberoende av inmatningsordningen, så att skriva namn i bokstavsordning, efter sittplan eller i slumpmässig ordning påverkar inte rättvisan eller utfallet av lottningen.

Relaterade verktyg