Hvordan fungerer tilfeldige tall?
Tilfeldige tall brukes i alt fra dataspill og kryptering til loddtrekninger og lotterier. Men hva betyr det egentlig at et tall er «tilfeldig», og hvordan kan en datamaskin, som bare følger instruksjoner, lage noe uforutsigbart?
Tre typer tilfeldighet
- Fysisk tilfeldighet (TRNG): Hentes fra fysiske fenomener som termisk støy i elektronikk, radioaktivt henfall eller kuler som blandes i en trekningsmaskin. Den er helt uforutsigbar, men tregere å bruke.
- Pseudo-tilfeldighet (PRNG): En algoritme starter med et «frø» (seed) og regner ut en lang tallrekke som ser tilfeldig ut. Kjenner man frøet og algoritmen, kan rekken gjenskapes. JavaScripts
Math.random()fungerer slik, og i moderne nettlesere bruker den algoritmen xorshift128+. - Kryptografisk sikker tilfeldighet (CSPRNG): En algoritme som stadig fylles på med fysisk støy fra operativsystemet, og som er laget slik at det er praktisk umulig å forutsi neste tall selv om man har sett alle de forrige. Det er denne typen som brukes til krypteringsnøkler og passord.
Hva bruker Tallgenerator.no?
Alle verktøyene våre bruker nettleserens kryptografiske generator, crypto.getRandomValues(). Den hentes fra operativsystemets sikre tilfeldighetskilde, den samme som brukes når nettleseren setter opp en kryptert HTTPS-forbindelse. For en terning eller en lottorekke er forskjellen fra Math.random() liten i praksis. For passord og konkurransetrekninger er den viktig, fordi ingen skal kunne forutsi eller gjenskape resultatet.
Rettferdig stokking
Når en liste skal blandes, for eksempel i gruppeinndeling, rekkefølge eller loddtrekning, er det lett å gjøre feil. En vanlig snarvei i JavaScript er å sortere listen med en tilfeldig sammenligning. Det gir skjeve resultater, der noen rekkefølger dukker opp oftere enn andre. Vi bruker i stedet Fisher–Yates-algoritmen, som går gjennom listen bakfra og bytter hvert element med et tilfeldig valgt element foran seg. Da får alle mulige rekkefølger nøyaktig samme sannsynlighet.
Hva med de offisielle lotteriene?
Lotto og Vikinglotto trekkes med fysiske trekningsmaskiner, og trekningene er under tilsyn av Lotteri- og stiftelsestilsynet. Kulene gir ekte fysisk tilfeldighet, og trekningen er synlig for alle. Ingen generator kan forutsi resultatet, og ingen rekke har bedre vinnersjanse enn en annen. Les mer om vinnersjansene og om ansvarlig spill.