Hävisivätkö lautapelin nopat, tai puuttuuko d20 kesken roolipelisession? Tämä ilmainen noppakone korvaa kaikki nopat, joita sinulla ei ole juuri nyt käsillä. Aseta heitettävien noppien määrä kohtaan ”Nopat” — mitä tahansa 1 ja 20 väliltä — aseta jokaisen nopan tahkojen määrä kohtaan ”Sivut” ja paina ”Generoi”. Sivu aukeaa oletuksena kahdella tavallisella kuusisivuisella nopalla, joten ensimmäinen heitto on vain yhden painalluksen päässä. Jokainen noppa näytetään erikseen ja heiton summa ilmestyy niiden alle, joten 3d6 ei vaadi päässälaskua.
Jokainen heitto tapahtuu suoraan selaimessasi Web Crypto API -rajapinnan (crypto.getRandomValues) kautta. Se tuottaa kryptografisesti vahvoja satunnaislukuja järjestelmäsi omasta satunnaisuuden lähteestä, toisin kuin JavaScript-kielen näennäissatunnainen funktio kuten Math.random(). Raakadatana saadun 32-bittisen luvun muuttaminen nopan silmäluvuksi on juuri se kohta, jossa noppatyökalut menevät huomaamatta pieleen: arvon ottaminen modulo tahkojen määrä on ilmeinen tapa, mutta samalla vääristynyt. Ellei tahkojen määrä jaa lukua 2^32 tasan, pienimmät silmäluvut esiintyvät hieman useammin kuin muut. Tätä virhettä kutsutaan modulo-vääristymäksi (modulo bias), ja se on mitattavissa eikä vain teoreettinen. Tämä työkalu hylkää sen sijaan jokaisen arvon, joka ylittää tahkojen määrän suurimman tarkan kerrannaisen, ja arpoo uuden luvun — tekniikkaa kutsutaan hylkäysotannaksi (rejection sampling). Se vaatii muutaman ylimääräisen arvonnan, mutta tarjoaa tarkan takuun likimääräisen sijaan. Mitään ei lähetetä palvelimelle eikä mitään lokiteta, ja kun sivu on latautunut, heitot toimivat vaikka verkkoyhteys katkeaisi.
Kaksi kenttää tekevät kaiken työn, ja ne vastaavat suoraan pelien jo käyttämää noppanotaatiota. ”Nopat” on kerralla heitettävien noppien määrä, 1–20. ”Sivut” on jokaisen nopan tahkojen määrä, 2–1000 — riittävästi d2-kolikonheittoon, koko roolipelisettiin (d4, d6, d8, d10, d12 ja d20), prosenttinoppaan d100 ja mihin tahansa, mitä pelit keksivät näiden yli. Kaikki muodossa NdM kirjoitettu vastaa näitä kahta kenttää: 2d6 tarkoittaa ”Nopat” 2 ja ”Sivut” 6, yksittäinen d20 on ”Nopat” 1 ja ”Sivut” 20. Heitätkö 3d6 hahmon ominaisuudelle? Aseta ”Nopat” arvoon 3, ”Sivut” arvoon 6, paina ”Generoi”, ja kolme silmälukua ilmestyvät yhdessä niiden summan kanssa. Kaksi kytkintä muuttavat tuloksen ulkonäköä, eivät itse tulosta. ”Animoidut 3D-nopat”, joka on oletuksena päällä, pyörittää kuutiota jokaiselle nopalle ennen sen pysähtymistä — jos kytket sen pois päältä, luvut ilmestyvät välittömästi pelkkänä luettelona. ”Satunnainen väri” antaa jokaiselle nopalle oman värinsä vakiona olevan punaisen sijaan, ja se näkyy vain silloin, kun ”Animoidut 3D-nopat” on päällä, koska pelkässä luettelossa ei ole väritettäviä noppia. Pisteet piirretään vain kuusisivuiselle nopalle; kaikissa muissa arvottu luku näkyy suoraan tahkolla, sillä seitsentoistaiselle nopalle ei ole olemassa pistekuviota.
Tuloksen alla on rivi, joka säästää laskemisen vaivan: Σ on heiton kaikkien noppien summa. Sen vieressä on heiton kesto ja huomautus siitä, että tulos on tuotettu paikallisesti. ”Kopioi kaikki” siirtää tuloksen leikepöydälle ja ”Tallenna tiedostoon” kirjoittaa sen tekstitiedostoon — molemmat antavat yksittäiset silmäluvut rivi kerrallaan summan sijaan, jotta loki heitetyistä nopista pysyy lokina heitetyistä nopista. ”Historia” säilyttää 10 viimeisintä heittoasi omassa selaimessasi: napsauttamalla yhtä saat sen takaisin näytölle summan kera, voit kopioida tai poistaa yksittäisen merkinnän, tai tyhjentää koko listan milloin haluat. ”Tyhjennä” tyhjentää tuloslaatikon koskematta asetuksiisi.
Ovatko virtuaalinopat parempia kuin oikeat? Reiluuden suhteen kyllä, ja syy on fysiikassa. Tavallisen valetun nopan pisteet on porattu ja maalattu, ja jokainen poraus poistaa materiaalia, joten kuutospuoli — jossa on kuusi kuoppaa — jää hieman kevyimmäksi ja vastakkainen puoli hieman painavimmaksi. Kasinoiden precision dice -nopat (tarkkuusnopat) ovat olemassa juuri tästä syystä: niiden pisteet on täytetty tasapintaan samantiheyksisellä materiaalilla, niiden reunat on leikattu teräviksi pyöristämisen sijaan, ne on koneistettu millimetrin murto-osan tarkkuudella, ja silti ne poistetaan käytöstä muutaman tunnin pelin jälkeen. Pelilaatikon nopat eivät ole mitään näistä, ja ne huononevat ajan myötä — lohjennut kulma, vuosien ravistelun pyöristämä reuna, tai peitolle eikä pöydälle pudotettu noppa, joka ei oikeastaan edes sekoitu. Virtuaalinopassa ei ole geometriaa joka voisi olla pielessä, ei kulumista eikä heittotekniikkaa josta voisi kiistellä, ja se käyttäytyy kymmenennellä tuhannella heitolla täsmälleen samalla tavalla kuin ensimmäisellä. Se mitä se ei osaa, on levätä kädessäsi. Rehellinen yhteenveto on, että tämä noppakone voittaa reiluudessa mutta häviää tunnelmassa.
Reilu noppa ei ole sama asia kuin reilu summa. Yhden nopan jokainen tahko on yhtä todennäköinen, mutta heti kun lasket noppia yhteen, summista tulee erisuuruisia, ja tämä yllättää ihmiset jatkuvasti. Kaksi kuusisivuista noppaa voi asettua tasan 36 yhtä todennäköiseen yhdistelmään; kuusi niistä muodostaa summan 7, kun taas tasan yksi muodostaa summan 2 ja yksi summan 12 — joten 7 esiintyy kuusi kertaa niin usein kuin 12, täydellisen reiluilla nopilla. Kolmannen nopan lisääminen tiukentaa kuviota entisestään, minkä vuoksi 3d6 kasautuu keskivaiheille ja pelisuunnittelijat tarttuvat siihen, kun arvon on tarkoitus olla useammin keskimääräinen kuin äärimmäinen. Yhden kuusisivuisen nopan keskiarvo on 3,5, joten 2d6:n keskiarvo on 7 ja 3d6:n 10,5, ja tämä matematiikka on pelipöydässä yleensä hyödyllisempää kuin mikään yksittäinen todennäköisyys. Mikään tästä ei ole vääristymää: se on yksinkertaisesti sitä, mitä noppien laskeminen yhteen tekee, ja se on syy, miksi peli pyytää heittämään 2d6 eikä d12:ta, vaikka molemmat kattavat saman alueen.
Nopilla ei ole muistia. Neljä kuutosta peräkkäin ei tee viidennestä kuutosesta epätodennäköisempää, nopalle, joka ei ole näyttänyt ykköstä koko iltana, ei olla velkaa yhtään mitään, eikä mikään silmäluku tule koskaan ”vuoroon” — jokainen heitto on riippumaton kaikista aiemmista heitoista, eivätkä nopat voi tietää, mitä ne tekivät minuutti sitten. Vaisto, joka väittää muuta, on pelurin harha (gambler's fallacy), ja se on sama vaisto, joka tekee meistä huonoja keksimään noppaheittoja itse: jos meitä pyydetään kirjoittamaan uskottava heittosarja, vältämme toistoja, vuorottelemme suurten ja pienten välillä ja levitämme lukuja paljon tasaisemmin kuin satunnaisuus koskaan tekee. Aito satunnaisuus tuottaa sen sijaan rykelmiä, putkia ja pitkiä välejä. Epäilyttävän siisti sarja kantaa ihmisen sormenjälkeä.
Miksi valita tämä työkalu nopanheittoon?
- Heitot vain selaimessa: nopat heitetään laitteellasi, eikä niitä lähetetä minnekään
- Web Crypto API -satunnaisuus: kryptografisesti turvallinen, ei Math.random()
- Ei modulo bias -virhettä: rejection sampling pitää jokaisen tahkon yhtä todennäköisenä
- Mikä tahansa peliin tarvittava noppa: 1–20 noppaa kerralla, d2:sta d1000:een
- Summa lasketaan puolestasi: Σ laskee koko heiton yhteen, joten 3d6 ei vaadi laskemista
- Animoidut 3D-nopat, tai animaatio pois päältä välitöntä luetteloa varten
- Yksi väri noppaa kohden, jotta useat nopat erottaa toisistaan yhdellä silmäyksellä
- ”Historia” ja ”Tallenna tiedostoon”: säilytä kirjaa heitosta, jota joudut ehkä perustelemaan
- Rajoittamaton ja ilmainen: ei kirjautumista, ei käyttörajoituksia, ei mitään palvelimillamme
Noppia ilmestyy kaikkialle, missä peli tarvitsee luvun, jota kukaan ei valinnut. Pöytäroolipelaajat heittävät kotona tai pelikerhossa hyökkäyksensä d20:llä, ominaisuutensa 3d6:lla ja prosenttitarkistuksensa d100:lla, ja puolet noppapussistaan kadottanut ryhmä jatkaa pelaamista tästä huolimatta. Mökillä ja keittiön pöydän ääressä pelattavat lautapelit toimivat samalla tavalla noppien kadottua — aseta ”Sivut” arvoon 6, ”Nopat” arvoon 2 ja jatka pelaamista. Etä- ja foorumipelaajat heittävät jaetulla näytöllä, jotta kaikki näkevät samojen tulosten asettuvan paikoilleen. Viidennellä luokalla pidetään klassinen todennäköisyystunti: heitä 2d6 yhteensä 60 kertaa, pidä kirjaa summista ja anna kuvion muodostua taululle. Pelisuunnittelijat tarkistavat, onko mekaniikka todella yhtä altis ääripäille kuin miltä se tuntuu, ennen kuin mitään menee painoon. Ja monet heitot ratkaisevat vain sen, kuka aloittaa, kuka hakee kahvin tai kumpi kahdesta suunnitelmasta voittaa — ne heitolla ratkaistavat päätökset, joita ihmiset ovat tehneet noppien avulla useiden tuhansien vuosien ajan.
Tällä noppakoneella on muutama reilu rajoitus, jotka on hyvä tietää. Yksi heitto käyttää yhtä noppatyyppiä: kohdassa ”Sivut” oleva arvo koskee jokaista heiton noppaa, joten d20 ja d6 yhdessä vaativat kaksi heittoa yhden sijaan. Tässä ei ole muuttujia, ei etua eikä haittaa, ei räjähtäviä noppia eikä erillistä notaatiokenttää — saat silmäluvut ja niiden summan, ja mitä tahansa sääntö lisää niiden päälle, on sinun lisättävissäsi. Σ laskee jokaisen heitetyn nopan, kun taas ”Kopioi kaikki” ja ”Tallenna tiedostoon” tallentavat yksittäiset silmäluvut summan sijaan. Animaatio on aina kuusisivuinen kuutio tahkojen määrästä riippumatta, koska se on koristelua: tahko, jolle se pysähtyy, on heitto, jonka moottori on jo suorittanut. Heitot ovat paikallisia laitteellasi, joten etäpelissä yksi henkilö heittää ja jakaa näytön — tämä noppakone tuottaa heiton, jonka voit selittää, ei heittoa, jonka kolmas osapuoli voi varmentaa. Ja kryptografisesti reilu noppa on silti vain reilu noppa: sillä ei ole yhteyttä mihinkään arvontaan tai kasinopeliin, eikä se anna kenellekään etulyöntiasemaa. Näiden rajojen sisällä takuu on vahva — jokaisen nopan jokaisella tahkolla on täsmälleen sama mahdollisuus tulla valituksi, jokaisella yksittäisellä heitolla.