Kuinka ohjelmistoalgoritmit luovat todellista satunnaisuutta

Tietokone on huono arpomaan ilman apua. Se tekee täsmälleen sen, mitä koodi käskee. Siksi satunnaisuus digitaalisissa peleissä, salauksessa ja arvonnoissa rakennetaan tarkasti, vaikka lopputulos näyttäisi käyttäjälle vaivattomalta.

Kun arvonta näkyy pelaajalle sekunnissa

Kasinopeleissä satunnaisuus osuu silmiin heti. Rulla pysähtyy, kortti kääntyy tai bonuskierros käynnistyy, eikä pelaaja näe taustalla pyörivää laskentaa. Ennen ensimmäistä talletusta moni käy silti lukemassa ehdot, pelirajat ja talletus bonukset, koska juuri niistä näkee, miten kampanjat, kierrätys ja maksut on kirjoitettu auki.

Tällainen tarkistus sopii hyvin samaan aiheeseen kuin satunnaislukugeneraattorit. Molemmissa tärkeintä on ymmärtää, missä kohtaa käyttäjä tekee päätöksen. Arvonta kuuluu pelin tekniseen puoleen, mutta talletus, panoskoko ja pelin valinta ovat käyttäjän omia valintoja.

Hyvässä digitaalisessa pelissä nämä asiat pysyvät erillään. Pelaaja tietää, mitä voi hallita ja mitä ei. Silloin satunnaisuus tuntuu pelin osalta normaalilta, eikä käyttöliittymä sekoita siihen turhaa epäselvyyttä.

Tietokone tarvitsee siemenen

Ohjelmallinen satunnaisuus alkaa usein pienestä lähtöarvosta. Sitä kutsutaan siemeneksi. Kun algoritmi saa siemenen, se tuottaa numerojonon, joka näyttää satunnaiselta.

Tässä on pieni mutta tärkeä ongelma. Sama siemen voi tuottaa saman sarjan uudestaan. Siksi sama generaattori ei sovi joka paikkaan. Pelissä se voi riittää vaihteluun, mutta turvallisuudessa rima on korkeammalla. Salauksessa sama ajattelu olisi vaarallista. Jos ulkopuolinen pystyy arvaamaan siemenen, hän voi päätellä seuraavia arvoja.

Satunnaisuuden laatu riippuu siis käyttötarkoituksesta. Hahmon satunnainen reitti vaatii eri tasoa kuin maksuliikenteen turvaaminen. Samaa eroa käsitellään myös Oulun yliopiston tietotekniikan opinnoissa.

Peliarvonta ei ole sama kuin noppa pöydällä

Fyysinen noppa saa satunnaisuutta painosta, heittokulmasta, pinnasta ja pienistä virheistä. Tietokone ei heitä noppaa, vaan laskee. Pelissä tämä laskenta näkyy vaikkapa siinä, mitä kortti tulee seuraavaksi tai milloin harvinainen esine ilmestyy. Pelaaja ei yleensä mieti niitä, koska huomio pysyy ruudun tapahtumissa. Silti juuri ne kohdat tekevät pelistä vähemmän ennalta arvattavan.

Yleisiä käyttökohteita ovat:

  • Esineiden putoaminen. Harvinainen esine ei ilmesty jokaisen taistelun jälkeen.
  • Vihollisten liike. Sama huone ei tunnu joka kerralla täysin samalta.
  • Korttien jako. Pelaaja ei voi tietää seuraavaa korttia etukäteen.
  • Kartan rakentuminen. Luola tai kenttä voi vaihtua pelikerrasta toiseen.
  • Palkintojen ajoitus. Bonus voi tulla harvoin, mutta määrätyn rakenteen sisällä.

Näissä kohdissa satunnaisuus antaa pelille vaihtelua. Pelaaja voi silti oppia sääntöjä, rytmiä ja todennäköisyyksiä. Kaikki ei siis ole avoinna, vaikka yksittäinen hetki tuntuu arvaamattomalta.

Oikea satunnaisuus on usein laitteesta kiinni

Kun tarvitaan vahvempaa satunnaisuutta, ohjelma voi hakea apua ympäristöstä. Vahvempi satunnaisuus haetaan usein laitteen omasta “kohinasta”: hiiren liikkeistä, näppäinten ajoituksesta tai lämpötilan pienistä vaihteluista. Pelissä riittää usein kevyempi ratkaisu, mutta kirjautumisessa ja maksuissa numeron pitää olla vaikeammin arvattava. Käyttäjä näkee vain sen, että palvelu avautuu, maksu menee läpi ja peli käynnistyy normaalisti. Taustalla järjestelmä voi kuitenkin käyttää useita kerroksia, jotta numerot eivät olisi helposti arvattavia.

Kryptografia nostaa vaatimukset korkealle

Satunnaisuus liittyy läheisesti salaukseen. Kun verkkopalvelu luo avaimia, tunnisteita tai istuntokoodeja, arvattavuus olisi suora riski. Huono satunnaislähde voi rikkoa muuten siistin turvaratkaisun. Siksi myös RSA-salauksessa numeroiden valinnalla on väliä: avainten pitää olla sellaisia, ettei ulkopuolinen pysty arvaamaan niiden taustaa. Avainten luomisessa ei riitä, että numerot näyttävät sattumanvaraisilta. Niiden pitää kestää myös yritykset päätellä taustaa.

Tämä koskee myös viihdepalveluita. Jos sivusto käsittelee käyttäjätilejä, maksuja tai istuntoja, satunnaisuus ei ole vain pelin sisäinen ominaisuus. Turva näkyy siinä, että palvelu toimii ilman arvaamista.

Miksi satunnaisuus tuntuu joskus epäilyttävältä

Pelaaja huomaa poikkeamat herkästi. Kolme huonoa tulosta peräkkäin saa helposti ajattelemaan, että järjestelmä tekee jotain outoa. Ihmisen pää etsii kaavaa myös silloin, kun kyse on tavallisesta vaihtelusta.

Tätä tapahtuu digipeleissä, korttipeleissä ja arvonnoissa. Harvinainen osuma muistetaan pitkään, mutta tavalliset kierrokset unohtuvat nopeasti. Sama mieli, joka löytää reitin sokkelosta, yrittää löytää järjestyksen myös satunnaisesta sarjasta.

Siksi pelisuunnittelussa pelkkä matemaattinen reiluus ei aina riitä. Pelaajan pitää myös ymmärtää, mitä hän katsoo. Selkeät säännöt, näkyvät panokset ja ymmärrettävä palaute auttavat paljon.

Hyvä algoritmi ei tee itsestään numeroa

Parhaiten rakennettu satunnaisuus pysyy yleensä taustalla. Se ei varasta huomiota, eikä pakota käyttäjää miettimään matematiikkaa kesken pelin. Pelaaja huomaa sen vasta silloin, kun jokin tuntuu liian toistuvalta tai liian oudolta.

Ohjelmistoalgoritmit eivät siis luo taikaa. Ne käyttävät siemeniä, laskentaa, fyysisiä lähteitä ja kryptografisia menetelmiä sen mukaan, mitä palvelu tarvitsee. Pelissä tavoitteena voi olla vaihtelu. Maksuissa ja tietoturvassa tarvitaan ennustamattomuutta, jota ei voi murtaa arvaamalla.

Kun satunnaisuus on tehty kunnolla, käyttäjä saa kaksi asiaa yhtä aikaa. Kokemus pysyy elävänä, ja palvelu tuntuu luotettavalta. Se on aika paljon yhdeltä näkymättömältä numerovirralta.