Mistä aloittaa
Lue artikkeli siitä, mikä on satunnaislukugeneraattori: laitteistopohjaiset, pseudosatunnaiset ja kryptografisesti turvalliset generaattorit, miksi luvut toistuvat ja mitä selain tarjoaa. Kun tarvitset selitysten sijaan itse lukuja, satunnaislukugeneraattori arpoo ne suoraan selaimessasi mille tahansa vaihteluvälille, toistoilla tai ilman.
Missä generaattorit tekevät huomaamattomia virheitä
Vahva satunnaisuuden lähde on vain puolet työstä. Toinen puoli on sen raaka-arvojen sovittaminen haluamallesi vaihteluvälille, ja juuri siinä monet omatekoiset generaattorit epäonnistuvat. Arvon jakojäännöksen ottaminen vaihteluvälin koon mukaan (modulo) tuntuu ilmeiseltä ratkaisulta, mutta se aiheuttaa pienen vääristymän: ellei vaihteluvälin koko jaa lähteen tulosavaruutta tasan, välin pienimmät luvut esiintyvät hieman useammin kuin muut. Tätä puutetta kutsutaan jakojäännösvääristymäksi (modulo bias). Yksi korjauskeino on hylkäysotanta (rejection sampling): epätasaiseen loppuhäntään osuvat arvot hylätään ja arvotaan uudelleen. Generaattorimme toimii juuri näin, joten jokaisella vaihteluvälisi luvulla on täsmälleen sama mahdollisuus jokaisessa arvonnassa.
Sama perustelu sulkee pois oikotiet, joihin ihmiset usein tarttuvat ensimmäisenä. Math.random() ei takaa lainkaan turvallisuutta, ja taulukkolaskennan funktiot, kuten RAND() ja RANDBETWEEN(), kuuluvat samaan luokkaan: ne sopivat karkeaan sekoittamiseen, mutta eivät mihinkään, mitä joku saattaisi riitauttaa.
Luvut, listat ja nopat
Satunnaislukugeneraattori tuottaa lukuja määrittämältäsi vaihteluväliltä. Työkalu satunnaisvalitsija toimii liittämäsi listan pohjalta — nimet, osallistujat, vaihtoehdot —, jolloin sinun ei tarvitse koskaan yhdistää lukuja riveihin käsin. Lautapelejä varten noppakone heittää noppia ja laskee summat yhteen, ja kahden vaihtoehdon välillä valittaessa pelkkä kolikonheitto riittää. Kun satunnaisuuden tehtävänä on suojata jotain pelkän valinnan tekemisen sijaan, käytä vahvojen salasanojen generaattoria. Kaikki nämä hyödyntävät samaa kryptografisesti turvallista lähdettä suoraan selaimessasi.