Satunnaisvalitsija

Liitä mikä tahansa lista — nimet, tehtävät tai ideat — ja anna satunnaisvalitsijan valita reilusti. Jokainen arvonta suoritetaan suoraan selaimessasi, joten listasi ei koskaan lähde laitteeltasi.

Paina Generoi
Erotin tunnistetaan automaattisesti, mutta voit valita sen manuaalisesti alta.
Lisäasetukset

Pitääkö sinun arpoa kilpailun voittaja, valita oppilas vastaamaan tai päättää kuka tiskaa? Tämä ilmainen verkossa toimiva satunnaisvalitsija valitsee reilusti mistä tahansa liittämästäsi listasta. Laita alkiosi ”Elementit”-kenttään — yksi per rivi tai pilkuilla eroteltuna —, aseta haluamasi lukumäärä ”Määrä”-kenttään ja paina ”Generoi”. Lista vaatii vähintään kaksi alkiota ja siihen mahtuu jopa 1000 alkiota, joista jokainen voi olla enintään 200 merkkiä pitkä.

Jokainen valinta tehdään suoraan selaimessasi käyttämällä Web Crypto API:a (crypto.getRandomValues), joka tarjoaa kryptografisesti vahvoja satunnaisarvoja laitteesi käyttöjärjestelmästä. Listaasi ei koskaan lähetetä palvelimelle, sitä ei tallenneta, emmekä me koskaan näe sitä — tämä on täällä tärkeämpää kuin useimmissa generaattoreissa, sillä ihmisten liittämät tiedot ovat yleensä asiakaslistoja, luetteloita luokan oppilaista tai työkavereiden nimiä. ”Lataa tiedostosta” pitää saman lupauksen: selaimesi lukee tiedoston ja täyttää kentän paikallisesti ilman, että mitään lähetetään minnekään.

Asetukset on tehty vastaamaan sellaisia listoja, joita ihmisillä oikeasti on. ”Erotin” on oletuksena asennossa ”Automaattinen”, joka tunnistaa rivinvaihdot ja pilkut ja päättelee kumpi on kyseessä, joten taulukkolaskentaohjelmasta, viestistä tai asiakirjasta kopioitu lista toimii suoraan ilman uudelleenmuotoilua. Lukitse asetus arvoon ”Rivinvaihto”, ”Pilkku” tai ”Välilyönti” vain silloin, kun datasi sekoittaa eri muotoja — ja huomaa, että ”Välilyönti” on aina tietoinen valinta eikä koskaan automaattinen, sillä esimerkiksi koko nimissä on itsessään välilyöntejä, ja niiden jakaminen oletuksena rikkoisi useampia listoja kuin se korjaisi. ”Määrä” määrittää, kuinka monta alkiota arvotaan, väliltä 1–100. Arvotko kolme palkinnonsaajaa 200 osallistujan joukosta? Liitä osallistujat, aseta ”Määrä” arvoon 3 ja paina ”Generoi”. Kaksi valitsinta tulee käyttöön vasta kun määrä on vähintään 2, ja ne pysyvät harmaina siihen asti: ”Ilman kaksoiskappaleita”, joka päättää voiko saman alkion arpoa kahdesti, sekä ”Tulostusmuoto”, joka asettaa miten valinnat erotellaan toisistaan — ”Yksi per rivi”, ”Välilyönnillä eroteltu” tai ”Pilkulla eroteltu”.

Rivissä olevat painikkeet ”Elementit”-kentän sisällä tekevät muokkaukset, jotka muuten pitäisi tehdä muualla. ”Lataa tiedostosta” vetää listan suoraan teksti- tai CSV-tiedostosta. ”Sekoita” muuttaa kentän alkioiden järjestystä satunnaiseksi, ”Lajittele” järjestää ne aakkosjärjestykseen niin, että numerot järjestyvät luonnollisesti (toinen napsautus kääntää järjestyksen), ja ”Tyhjennä” tyhjentää koko kentän. ”Täytä esimerkkitiedoilla” pudottaa lyhyen esimerkkilistan, jotta voit kokeilla valitsijaa yhdellä napsautuksella, kun taas ”Laajenna sisältöön sopivaksi” avaa kentän näyttämään pitkän listan kokonaan ja ”Kutista oletuskokoon” taittaa sen takaisin. Tuloksen alla ”Kopioi kaikki” vie jokaisen valinnan leikepöydälle, ”Tallenna tiedostoon” kirjoittaa ne levylle, ja ”Historia” pitää selaimesi muistissa 10 viimeisintä arvontaasi, joten aiempi tulos on aina yhden napsautuksen päässä.

Miten valinta itse asiassa tapahtuu? Kun painat ”Generoi”, sivu pyytää selaimelta satunnaisarvoja crypto.getRandomValues -rajapinnan kautta ja käyttää niitä valitsemaan sijainteja listaltasi, sen sijaan että se luottaisi JavaScriptin Math.random() -funktion kaltaisiin pseudosatunnaisiin toimintoihin. Raakan 32-bittisen arvon muuttaminen sijainniksi on se vaihe, jossa arvontakoneet usein menevät hiljaisesti pieleen: arvon jakojäännöksen (modulo) ottaminen listan pituudella on ilmeisin lähestymistapa, mutta samalla vääristynyt sellainen, sillä ellei listan pituus jaa lukua 2^32 tasan, listan alkupäässä olevat alkiot tulevat valituiksi hieman useammin kuin muut. Tätä virhettä kutsutaan modulo-vääristymäksi (modulo bias), ja se on pikemminkin mitattavissa oleva kuin pelkkä teoreettinen ongelma. Tämä valitsija sen sijaan hylkää kaikki arvot, jotka ylittävät suurimman mahdollisen listan pituuden tarkan kerrannaisen, ja arpoo uudelleen — tekniikkaa kutsutaan hylkäysotannaksi (rejection sampling). Se maksaa muutaman ylimääräisen arvonnan, mutta ostaa niillä tarkan takuun likimääräisen sijaan. Sijoittuminen listalla ei muuta mitään: ensimmäisellä ja viimeisellä alkiolla on täsmälleen sama todennäköisyys jokaisessa arvonnassa.

Asetus ”Ilman kaksoiskappaleita” erottaa toisistaan kaksi aidosti erilaista arvontatyyppiä, ja tilastotieteellä on molemmille oma nimensä. Kun asetus on päällä, valitsija sekoittaa kopion listastasi Fisher-Yates-algoritmilla ja poimii alkiot aivan huipulta — aivan kuten vetäisi arpoja hatusta laittamatta niitä takaisin, jolloin ketään ei valita kahdesti ja jokainen sen kokoinen ryhmä on yhtä todennäköinen. Tämä on otantaa ilman takaisinpanoa (sampling without replacement), ja juuri tätä tarvitset palkinnonsaajiin, joukkueisiin ja vuorojen järjestykseen. Kun se on pois päältä, jokainen valinta tehdään itsenäisesti koko listasta, joten sama alkio voi tulla esiin useammin kuin kerran — tämä on otantaa takaisinpanolla (sampling with replacement), jota haluat silloin, kun kaikki pysyvät mukana jokaisella kierroksella, kuten toistuvissa arvonnoissa tai nopeassa tilastollisessa otoksessa. Kumpikaan tila ei ole toista reilumpi; ne vastaavat vain eri tarpeisiin.

Reilun arvonnan ei kuulu näyttää reilulta. Arvo kymmenestä nimestä viisi, ja tulet säännöllisesti näkemään kaksi valintaa, jotka sijaitsivat vierekkäin alkuperäisellä listalla, tai saman nimen kahdesti peräkkäin kunhan kaksoiskappaleet on sallittu — jokainen näistä tapauksista on täysin arkinen. Jokainen arvonta on itsenäinen: aiemmilla valinnoilla ei ole minkäänlaista vaikutusta myöhempiin, eikä kenenkään kohdalla voitto ole koskaan ”velkaa” aiempien tappioiden vuoksi. Vaisto, joka väittää itsepintaisesti toista, on pelurin harha (gambler's fallacy), ja se on sama vaisto, joka tekee meistä itsestämme huonoja valitsemaan satunnaisesti. Jos meitä pyydetään valitsemaan sattumanvaraisesti, vältämme listan alkua ja loppua, vältämme toistamasta samaa nimeä ja levitämme valintamme paljon tasaisemmin kuin todellinen sattuma koskaan tekee. Epäilyttävän siistiltä näyttävä tulos on ihmisen sormenjälki; aito satunnaisuus tuottaa rykelmiä.

Miksi käyttää tätä satunnaisvalitsijaa?

Satunnaista valitsemista tarvitaan kaikkialla, missä tehdyn päätöksen täytyy kestää kyseenalaistamista. Suomalaiset opettajat kutsuvat oppilaita vastaamaan suosimatta ketään ja jakavat luokan projektiryhmiin. Striimaajat ja markkinoijat arpovat kilpailujen ja arpajaisten voittajia yleisön edessä, jonka on voitava luottaa tulokseen. Esihenkilöt jakavat ne tehtävät joihin kukaan ei vapaaehtoisesti ilmoittaudu, ja tiimit päättävät demojen esitysjärjestyksestä tai siitä kuka on päivystysvuorossa. Tutkijat poimivat tietueista satunnaisotoksen tarkastettavaksi. Perheet lopettavat riidan siitä mitä katsotaan, ja nälkäinen kaveriporukka valitsee mihin mennään syömään. Yhdistävä tekijä on valinta, jonka kuka tahansa voi selittää jälkikäteen: arvonta käyttää kryptografista satunnaisuutta, se tapahtuu kokonaan omalla laitteellasi, ja ”Historia” pitää tuloksen tallessa jos joku kysyy siitä myöhemmin.

Tällä valitsijalla on muutama reilu rajoitus, jotka on hyvä tietää. Se ei pysty arpomaan useampia uniikkeja alkioita kuin mitä listallasi on — kolme voittajaa vaatii vähintään kolme nimeä — ja se pysähtyy 1000 alkioon, joista kukin voi olla 200 merkkiä pitkä. Yhdessä arvonnassa sallitaan korkeintaan 100 valintaa. Painikkeet ”Sekoita” ja ”Lajittele” toimivat rivi kerrallaan, joten yhdelle riville liitetty pilkuilla eroteltu lista järjestetään vasta, kun se on muutettu yhdeksi alkioksi per rivi. Molemmat näistä muuttavat ainoastaan kentän ulkoasua arvonnan sijaan, joka puolestaan on täysin yhtä reilu riippumatta siitä, missä järjestyksessä alkiosi ovat. Jokainen alkio kantaa tarkalleen saman painoarvon tarkoituksella, joten sellainen arvonta, jossa yhden nimen tulisi laskea tuplana, vaatii kyseisen nimen listaamisen kahdesti. Näiden rajojen puitteissa takuu on vahva — jokaisella listasi alkiolla on täsmälleen sama mahdollisuus tulla valituksi jokaisella yksittäisellä arvontakerralla.

FAQ

Kuinka arvon satunnaisen nimen listasta?

Liitä nimet ”Elementit”-kenttään — yksi per rivi tai pilkuilla tai välilyönneillä erotettuina —, jätä ”Määrä” arvoon 1 ja paina ”Generoi”. Yksi nimi arvotaan välittömästi. Useamman nimen kohdalla nosta ”Määrä” haluamaasi lukuun.

Onko valinta todella reilu?

Kyllä. Jokainen valinta käyttää selaimesi Web Crypto API:a (crypto.getRandomValues) yhdessä hylkäysotannan (rejection sampling) kanssa, mikä poistaa modulo-vääristymän, jonka naiivi toteutus muuten toisi mukanaan. Jokaisella alkiolla on täsmälleen sama todennäköisyys riippumatta sen sijainnista listalla, ja useamman erillisen alkion arpominen käyttää Fisher-Yates-sekoitusta, joten jokainen kyseisen kokoinen ryhmä on yhtä lailla todennäköinen.

Ladataanko listani teidän palvelimellenne?

Ei. Koko arvonta suoritetaan paikallisesti selaimessasi: lista, valinnat ja historia eivät koskaan lähde laitteeltasi, joten nimet, sähköpostit ja mitkä tahansa yksityiset listat ovat turvallisia liittää. Myös ”Lataa tiedostosta” on paikallinen — selaimesi lukee tiedoston itse eikä mitään lähetetä minnekään.

Voinko liittää pilkuilla tai välilyönneillä erotellun listan sen sijaan, että joka rivillä olisi yksi alkio?

Kyllä. Asetus ”Erotin” on valinnassa ”Automaattinen”, joka erottaa rivinvaihdot ja pilkut toisistaan itsekseen, joten taulukkolaskentaohjelmasta, viestistä tai asiakirjasta kopioitu lista toimii sellaisenaan. Välilyönneillä eroteltu lista vaatii yhden lisävaiheen — aseta ”Erotin” arvoon ”Välilyönti” —, sillä koko nimien kaltaiset alkiot sisältävät itsessään välilyöntejä, eikä niitä koskaan jaeta automaattisesti. Lukitse ”Erotin” asetukseen ”Rivinvaihto” tai ”Pilkku”, jos datassasi on sekaisin eri muotoja.

Mitä ”Ilman kaksoiskappaleita” -kytkin tekee?

Kun ”Ilman kaksoiskappaleita” on päällä, jokainen arvottu alkio on erilainen — aivan kuin vetäisi arpoja hatusta laittamatta niitä takaisin, ja tätä juuri tarvitset palkinnonsaajia tai joukkueita valitessasi. Kun se on pois päältä, sama alkio voidaan valita useammin kuin kerran, mitä tilastotieteilijät kutsuvat otannaksi takaisinpanolla.

Miksi asetukset ”Ilman kaksoiskappaleita” ja ”Tulostusmuoto” näkyvät harmaina?

Koska molemmat soveltuvat vasta kun arvot useamman kuin yhden alkion, kuten niiden vieressä oleva vihje sanoo: ”Sovelletaan, kun määrä on vähintään 2”. Nosta ”Määrä” kahteen tai suuremmaksi, jolloin molemmat tulevat käyttöön. Yhden alkion kohdalla ei ole mitään toistettavaa eikä mitään eroteltavaa.

Mitä asetus ”Tulostusmuoto” tekee?

Se määrittää, miten useat valinnat näytetään ja kopioidaan: ”Yksi per rivi”, viestikenttään nopeasti sopiva ”Välilyönnillä eroteltu”, tai taulukkolaskentaohjelmaan tai skriptiin liitettävä ”Pilkulla eroteltu”. Se tulee käyttöön heti kun ”Määrä” on 2 tai enemmän.

Mitä painikkeet ”Sekoita” ja ”Lajittele” tekevät?

”Sekoita” muuttaa ”Elementit”-kentän sisällä olevien alkioiden järjestystä, ja ”Lajittele” järjestää ne aakkosjärjestykseen niin, että numerot järjestetään luonnollisesti — napauttamalla sitä uudelleen käännät järjestyksen päinvastaiseksi. Molemmat muuttavat ainoastaan sitä, miten listasi on kirjoitettu, eivät sitä, miten arvonta toimii: valitsija on aivan yhtä reilu riippumatta alkioiden järjestyksestä.

Kuinka monta alkiota lista voi sisältää, ja kuinka monta voin valita kerralla?

Lista vetää sisäänsä 2–1000 alkiota, joista jokainen on enintään 200 merkkiä pitkä, ja yksi arvonta palauttaa enintään 100 valintaa. Tyhjät rivit ja reunoilla olevat välilyönnit jätetään fiksusti huomiotta, joten taulukosta tai asiakirjasta liitetty lista toimii suoraan sellaisenaan.

Sopiiko työkalu kilpailujen tai arvontojen voittajien valintaan?

Kyllä, ja se onkin yksi sen yleisimmistä käyttötarkoituksista. Liitä osallistujat, aseta ”Määrä” palkintojen lukuun, pidä ”Ilman kaksoiskappaleita” päällä, jottei kukaan voita kahdesti, ja paina ”Generoi”. Koska arvonta käyttää kryptografisesti turvallista satunnaisuutta ja pyörii täysin omalla laitteellasi, on prosessi helppo selittää, ja ”Historia” pitää tuloksen tallessa siltä varalta, että osallistuja kyseenalaistaa sen myöhemmin.

Voinko käyttää sitä ihmisten jakamiseen joukkueisiin?

Kyllä. Aseta ”Määrä” ensimmäisen joukkueen kokoon ja paina ”Generoi” — arvotut nimet muodostavat joukkueen yksi. Poista ne listalta ja toista toimenpide seuraavan joukkueen kohdalla. Pidä asetus ”Ilman kaksoiskappaleita” päällä, jottei kukaan päädy vahingossa kahteen joukkueeseen samanaikaisesti.

Miksi sama nimi tuli esiin kahdesti peräkkäin?

Koska itsenäiset arvonnat toistuvat, ja miltä satunnaisuus tosiaan näyttää. Jokainen arvonta jättää täysin huomiotta kaikki sitä edeltäneet arvonnat, joten kymmenen nimen listassa saman nimen esiintymisellä kahdesti peräkkäin on aina 1:10 mahdollisuus — tavallista, ei rikkinäistä. Laita asetus ”Ilman kaksoiskappaleita” päälle, jos tarvitset jokaisen valinnan samassa arvonnassa olevan täysin uniikki.

Muistaako valitsija arvontani, ja onko se ilmainen?

”Historia” pitää kirjaa 10 viimeisimmästä arvonnasta omassa selaimessasi, jotta voit palauttaa, kopioida tai poistaa aiemman tuloksen ja tyhjentää koko roskan milloin tahansa haluat. Työkalu on täysin ilmainen ilman kirjautumista, ja koska mitään ei siirretä eteenpäin, emme pystyisi näkemään tai tallentamaan valintojasi vaikka edes haluaisimme.