CodeKitHub
Generaattorityökalut

Nimien Arvontageneraattori

Viimeksi päivitetty:

Nimien arvonta joulupukkiarvontaan tai lahjanvaihtoon käsin törmää oikeaan matemaattiseen ongelmaan: puhtaasti satunnainen sekoitus voi vahingossa arpoa jonkun itselleen, ja uudelleenarvonta kunnes se "näyttää oikealta" ei ole enää oikeasti satunnaista. Tämä työkalu ratkaisee sen kunnolla — syötä kaikkien nimet, ja se laskee derangementin (sekoituksen, jossa on matemaattinen tae ettei kukaan päädy omaan nimeensä), ja piilottaa sitten jokaisen tuloksen napautettavan paljastuspainikkeen taakse, jotta ihmiset voivat tarkistaa oman parinsa jaetulta näytöltä näkemättä muiden tuloksia.

Mikä tämä työkalu on?

Derangementti on tarkka matemaattinen käsite: joukon permutaatio (uudelleenjärjestely), jossa mikään alkio ei päädy alkuperäiselle paikalleen. Lahjanvaihdossa tämä tarkoittaa kaikkien nimien sekoittamista uuteen järjestykseen niin, ettei kukaan pariudu itsensä kanssa — juuri se ehto, jonka reilu joulupukkiarvonta tarvitsee, ja juuri se, mitä yksinkertainen `array.sort(() => Math.random() - 0.5)` -sekoitus EI itsestään takaa.

Tämä työkalu tuottaa derangementin sekoittamalla listaa toistuvasti satunnaistetulla algoritmilla ja tarkistamalla itselleen-arvonnan ehdon, käyttäen `crypto.getRandomValues()`-funktiota satunnaisuuden lähteenä `Math.random()`:n sijaan — sama kryptografisesti turvallinen lähde, jota tämä sivusto käyttää [Salasanageneraattorissa](/password-generator/) ja [Random Letter Generatorissa](/random-letter-generator/).

Paljastuspainike-suunnittelu ratkaisee erillisen, hyvin käytännöllisen ongelman ryhmässä nimiä arvottaessa: kaikkien parien näyttäminen kerralla näytöllä pilaa yllätyksen kaikilta samaan aikaan. Kun jokaisen tulos on piilossa omassa painikkeessaan, yksi laite voidaan kierrättää (tai näyttö jakaa) niin että jokainen tarkistaa vain oman nimensä.

Miksi käyttää sitä?

  • On toimiston pikkujoulut, ja joku juuri muisti ettei kukaan järjestänyt joulupukkiarvontaa — kirjoita 14 nimeä tiimichatista laatikkoon ja arvo parit kokouksessa ennen kuin kaikki hajaantuvat lounaalle.
  • Perheen ryhmäkeskustelu ei pääse yksimielisyyteen kuka ostaa kenellekin tänä vuonna, eikä puolet porukasta halua ladata uutta sovellusta pelkkää arvontaa varten — avaa tämä yhdellä puhelimella, kierrätä sitä pöydän ympäri ja anna jokaisen napauttaa omaa paljastuspainikettaan.
  • Joku lähti ryhmästä kaksi päivää ennen vaihtoa ja viimevuotinen taulukko on nyt väärä — liitä päivitetty nimilista uudelleen ja arvo uudestaan sekunneissa manuaalisen korjailun sijaan.
  • Kokeilit nopeaa `sort(() => Math.random() - 0.5)` -sekoitusta työpaikan vaihtoon ja joku päätyi arvomaan itsensä — tämä työkalu on olemassa juuri sen estämiseksi taatulla derangementilla onnekkaan sekoituksen sijaan.
  • Haluat paljastuksen tapahtuvan livenä videopuhelussa ilman että kenenkään muun tulos välähtää näytöllä — jaa näyttösi ja anna jokaisen kertoa milloin klikata heidän riviään, jotta vain he näkevät sen.

Käyttöohje

  1. Kirjoita jokaisen osallistujan nimi omalle rivilleen — vähintään 3 eri nimeä.
  2. Klikkaa "Arvo parit" — työkalu laskee kelvollisen derangementin niin ettei kukaan pariudu itsensä kanssa.
  3. Jokaisen osallistujan rivillä on nimi ja piilotettu tulos — kierrätä laitetta tai jaa näyttö, ja anna jokaisen klikata omaa "Napauta paljastaaksesi" -painikettaan nähdäkseen kenelle he antavat lahjan.
  4. Klikkaa paljastusta uudelleen piilottaaksesi sen, kun joku on tarkistanut tuloksensa, jotta näyttö on valmis seuraavalle henkilölle.

Esimerkki

Syöte

Anna, Pekka, Liisa, Mikko

Tuloste

Anna → Liisa, Pekka → Mikko, Liisa → Pekka, Mikko → Anna

Jokainen ajo tuottaa erilaisen kelvollisen derangementin — tämä on yksi esimerkkitulos. Huomaa ettei kukaan pariudu itsensä kanssa, mikä on se yksi ehdoton vaatimus joka oikeassa joulupukkiarvonnassa tarvitaan ja jota tavallinen satunnainen sekoitus ei takaa.

Derangementti vs. tavallinen satunnainen sekoitus

Tavallinen sekoitus ja derangementti näyttävät samankaltaisilta, mutta vain toinen niistä on todella turvallinen lahjanvaihtoon.

MenetelmäVoiko joku arpoa itsensä?Reilu arpoa uudelleen kunnes "näyttää oikealta"?
Tavallinen satunnainen sekoitusKyllä — todellinen mahdollisuus, etenkin pienissä ryhmissäEi — huonojen tulosten manuaalinen hylkääminen vääristää lopputulosta
Derangementti (tämä työkalu)Ei — matemaattisesti suljettu pois rakenteen ansiostaEi sovellettavissa — jokainen kelvollinen tulos täyttää ehdon jo valmiiksi

Aiheeseen liittyvät työkalut

Muihin satunnaisarvontoihin ja generaattoreihin, kokeile näitä työkaluja.

→ Fantasianimigeneraattori · Satunnaislukugeneraattori

Ryhmäarvonnan järjestäminen pilaamatta sitä itseltäsi

Joulupukkiarvonnan hankalin osa ei ole satunnaisuus — se on varmistaminen, ettei arvonnan järjestäjä vahingossa näe kaikkien pareja sitä asettaessaan. Muutama tapa helpottaa tätä.

  • Kirjoita nimilista ja klikkaa "Arvo parit" vierittämättä tuloksia itse läpi — anna laite suoraan ensimmäiselle osallistujalle sen sijaan että kurkistat kuka sai kenet.
  • Jos olet järjestäjä ja myös osallistuja, pyydä jotakuta muuta pitämään laitetta omaa paljastustasi varten, tai odota viimeiseksi ettei kukaan tunne kiirettä katsoessaan sinua.
  • Etäryhmälle: jaa sivu näytöllä mutta pidä kursori pois paljastuspainikkeista — kerro kenen vuoro on ja anna jokaisen klikata omaa riviään äänen tai chatin kautta.
  • Jos ryhmä on suuri, etene samassa järjestyksessä kuin istumajärjestys tai osallistujalista, ettei kukaan jää vahingossa väliin tai tule tarkistetuksi kahdesti.

Usein kysytyt kysymykset

Mitä tapahtuu jos nimi syötetään kahdesti?

Työkalu vaatii että jokainen nimi on uniikki ennen arvontaa — jos se havaitsee kaksoiskappaleen, se pyytää korjaamaan listan ensin, koska kahta samannimistä osallistujaa olisi mahdotonta erottaa tuloksista.

Voiko joku arpoa itsensä?

Ei — työkalu laskee nimenomaan derangementin, sekoituksen, jonka matemaattinen ominaisuus on ettei mikään alkio (henkilö) päädy omalle alkuperäiselle paikalleen. Tämän takaa algoritmi, ei sattuma niin kuin tavallisessa satunnaisessa sekoituksessa.

Mikä on vähimmäismäärä osallistujia?

Kolme. Kahdella henkilöllä derangementti on mahdoton ilman että he yksinkertaisesti arpovat toisensa joka kerta, mikä ei ole merkityksellisesti satunnaista, joten työkalu vaatii vähintään kolme osallistujaa.

Miten pidämme tulokset yksityisinä, jos katsomme kaikki samaa näyttöä?

Jokaisen osallistujan tulos on piilossa omassa "Napauta paljastaaksesi" -painikkeessaan sen sijaan että kaikki näytettäisiin kerralla. Kierrätä laitetta (tai jaa näyttö) vuorotellen jokaiselle, anna heidän paljastaa ja huomioida vain oma rivinsä, ja klikkaa sitten uudelleen piilottaaksesi ennen seuraavalle antamista.

Lähetetäänkö nimet tai arvontatulos palvelimelle?

Ei. Kaikki — nimien lukeminen, derangementin laskeminen ja paljastuspainikkeiden näyttäminen — tapahtuu kokonaan selaimessasi. Mitään ei ladata, ja välilehden sulkeminen tyhjentää kaiken, joten mihinkään ei jää arvontahistoriaa joka voisi vahingossa pilata yllätyksen.

Voinko sulkea pois tiettyjä pareja, kuten pariskuntia jotka eivät saisi ostaa toisilleen?

Ei tällä hetkellä — derangementti takaa vain ettei kukaan pariudu itsensä kanssa, se ei sulje pois muita tiettyjä pareja kuten puolisoita tai sisaruksia. Jos tämä on tärkeää ryhmällesi, tarkista tulos ja arvo manuaalisesti uudelleen jos ei-toivottu pari osuu kohdalle.

Mitä tapahtuu jos päivitän tai suljen välilehden kesken paljastamisen?

Arvonta katoaa — mitään ei tallenneta sivulatausten välillä, tarkoituksella, jotta mihinkään ei jää jäljelle tallennetta joka voisi myöhemmin pilata yllätyksen. Jos näin käy, syötä nimet uudelleen ja arvo uudestaan; saat uuden (erilaisen) kelvollisen derangementin.

Voivatko kaksi henkilöä ajaa erilliset arvonnat ja saada eri tuloksia samoille nimille?

Kyllä — jokainen arvonta satunnaistetaan uudelleen `crypto.getRandomValues()`-funktiolla, joten saman nimilistan syöttäminen kahdesti tuottaa hyvin todennäköisesti kaksi eri kelvollista derangementtia, ei samaa parittelua toistettuna.

Onko osallistujamäärälle yläraja?

Kovaa rajaa ei ole asetettu — derangementtialgoritmi toimii samalla tavalla syötitpä 3 vai 30 nimeä. Hyvin suuret ryhmät voivat viedä hieman enemmän laskenta-aikaa, mutta käytännössä tätä ei huomaa alle muutaman sadan nimen kohdalla.

Vaikuttaako nimien kirjoitusjärjestys siihen, kuka päätyy kenellekin?

Ei — sekoitus satunnaistetaan syöttöjärjestyksestä riippumatta, joten nimien kirjoittaminen aakkosjärjestyksessä, istumajärjestyksen mukaan tai satunnaisessa järjestyksessä ei vaikuta arvonnan reiluuteen tai lopputulokseen.

Liittyvät työkalut