Trekk vinnere fra en liste, del klassen i grupper, stokk rekkefølgen, generer tall i et intervall eller kast mynt og terning. Trekningene bruker nettleserens kryptografiske tilfeldighetskilde.
Én oppføring per linje. Trekk vinnere uten gjentakelse, stokk hele rekkefølgen eller del listen i grupper.
Begge grensene er inkludert. Uten gjentakelse kan du ikke trekke flere tall enn intervallet rommer.
Tellerne står på til du laster siden på nytt. Kast mange ganger og se hvor lenge det tar før fordelingen jevner seg ut.
En datamaskin er konstruert for å gjøre nøyaktig det samme hver gang. Det er hele poenget med den. Ekte tilfeldighet er dermed noe av det vanskeligste den kan produsere, og løsningen er å hente uforutsigbarhet utenfra — fra den fysiske verden.
Moderne operativsystemer samler kontinuerlig inn små målinger som ikke lar seg forutsi: presise tidspunkt for tastetrykk og musebevegelser, støy fra maskinvare, variasjoner i diskaksess og nettverkspakker, og på nyere prosessorer en egen støykrets bygget inn i brikken. Denne samlingen kalles entropi, og den mates inn i en generator som strømmer ut bit du ikke kan gjette.
Når du trykker på en av knappene over, ber siden nettleseren om slike bit gjennom crypto.getRandomValues. Alternativet, Math.random, er noe helt annet: en ren regneoppskrift som produserer en rekke tall som ser tilfeldige ut.
En pseudotilfeldig generator starter med et tall — et frø — og regner seg videre etter en fast formel. Rekken ser rotete ut, den består kontrollen for jevn fordeling, og den er rask. Men den er fullstendig bestemt av frøet. Samme frø gir samme rekke, hver eneste gang.
Mange nettlesere bruker en algoritme kalt xorshift128+ bak Math.random. Den er god nok til animasjoner og spillmekanikk, men den er ikke laget for å motstå noen som prøver å regne seg bakover. Forsøk har vist at det holder å observere et lite antall utfall for å rekonstruere den interne tilstanden og forutsi resten av rekken.
Derfor: bruk aldri Math.random til noe som har verdi — ikke til premietrekninger, ikke til passord, ikke til nøkler eller engangskoder. Skillet handler ikke om hvor tilfeldig noe ser ut, men om hvor vanskelig det er å forutsi for en som gjerne vil.
| Kilde | Forutsigbar | Egnet til | Merknad |
|---|---|---|---|
| Math.random() | Ja, i praksis | Spill, animasjon, testdata | Rask, men rekken kan rekonstrueres |
| crypto.getRandomValues() | Nei | Trekninger, passord, nøkler | Henter entropi fra operativsystemet |
| Terning eller mynt | Nei | Små valg, undervisning | Slitasje og kast kan gi liten skjevhet |
| Trekning med vitner | Nei | Formelle trekninger | Treg, men lett å etterprøve |
Selv med en perfekt tilfeldighetskilde er det lett å innføre skjevhet i siste ledd. Den vanligste måten å få et tall mellom 0 og 9 fra et stort tilfeldig tall, er å ta resten etter divisjon med 10. Problemet er at antallet mulige verdier sjelden er delelig med 10.
Tenk deg en generator som gir tall fra 0 til 11, og du vil ha et tall fra 0 til 9. Verdiene 10 og 11 gir rest 0 og 1. Da blir 0 og 1 dobbelt så sannsynlige som resten. Skjevheten er liten når generatoren har fire milliarder mulige verdier, men den er der, og den er unnødvendig.
Løsningen kalles forkastningsmetoden: du regner ut hvor mange verdier som deler seg jevnt, og trekker på nytt hvis du havner i overskuddet. Det er det denne siden gjør. Kostnaden er noen ekstra trekk i ny og ne, gevinsten er at alle utfall faktisk er like sannsynlige.
Be en gruppe skrive ned tjue tilfeldige tall mellom 1 og 6, og sammenlign med tjue faktiske terningkast. Listene skiller seg fra hverandre på en måte som er lett å kjenne igjen: menneskene unngår gjentakelser. De skriver sjelden samme tall to ganger på rad, og næsten aldri tre.
Terningen gjør det hele tiden. Sjansen for at neste kast blir likt det forrige er 1 av 6, altså 16,7 %. I tjue kast vil det i snitt skje litt over tre ganger. Ekte tilfeldighet klumper seg, mens folk sprer jevnt fordi jevnhet føles mer tilfeldig.
Det samme forklarer hvorfor du møter kjente ansikter langt oftere enn du forventer, og hvorfor en tilfeldig spilleliste kan spille to låter av samme artist rett etter hverandre. Flere musikktjenester har innført bevisst utilfeldige regler i stokkingen, fordi brukerne klaget på at det tilfeldige ikke føltes tilfeldig nok.
| Antall personer | Sjanse for felles fødselsdag |
|---|---|
| 10 | 11,7 % |
| 23 | 50,7 % |
| 30 | 70,6 % |
| 50 | 97,0 % |
| 70 | 99,9 % |
Tabellen er det klassiske eksempelet. I en skoleklasse på 30 er det over 70 % sjanse for at minst to har samme fødselsdag. De fleste gjetter langt lavere, fordi de tenker på sin egen bursdag i stedet for på alle de 435 mulige parene i klassen.
Den mest kostbare misforståelsen om tilfeldighet er troen på at utfall «skylder» deg noe. Har rulettkula landet på svart ti ganger, føles rødt overmodent. Det er det ikke. Kula har ingen hukommelse, og sannsynligheten er nøyaktig den samme på kast elleve som på kast én.
Navnet kommer fra en kveld i Monte Carlo i 1913, der kula landet på svart 26 ganger på rad. Spillerne satset stadig større beløp på rødt i troen på at det måtte snu, og tapte store summer.
Loven om store tall sier noe annet enn det folk tror den sier. Den sier at andelen kron nærmer seg 50 % når antallet kast vokser — ikke at differansen i antall jevner seg ut. Etter tusen kast kan du godt ligge tjue kron bak; andelen er likevel nær 50 %, fordi tjue av tusen er lite. Kast mynten femti ganger i kalkulator 3 og se selv.
En trekning er ikke bare et teknisk problem, den er også et tillitsproblem. Selv en perfekt tilfeldig trekning er verdiløs hvis ingen kan kontrollere at den gikk riktig for seg. Rekkefølgen på det du gjør, betyr mer enn hvilken generator du bruker.
Om lotterier: trekninger med pengepremier eller andre gevinster kan være omfattet av lotteriloven og kreve tillatelse. Reglene skiller mellom lukkede trekninger blant medlemmer, markedsføringskonkurranser og lotterier, og de endres fra tid til annen. Sjekk hva som gjelder hos Lotteritilsynet før du arrangerer noe med premie av verdi.
Gruppeinndeling er der en tilfeldig generator gjør mest nytte i hverdagen. Den fjerner den vonde delen av å velge lag — ingen blir valgt sist, og ingen lærer kan mistenkes for å ha satt sammen gruppene strategisk.
Verktøyet over deler listen ved først å stokke hele rekkefølgen og deretter dele ut annenhver til hver gruppe. Det gir gruppestørrelser som skiller seg med høyst én person, også når antallet ikke går opp. Trettien elever i fire grupper blir 8, 8, 8 og 7.
Noen råd fra praksis: legg inn navnene én gang og ta vare på listen, slik at du ikke skriver den på nytt hver uke. Trekk gruppene mens elevene ser på. Og vær åpen om at rent tilfeldige grupper av og til gir en sammensetning som ikke fungerer — da er det bedre å trekke om igjen åpent enn å justere i det stille.
Skal du sette opp selve uka etterpå, er timeplangeneratoren et naturlig neste steg. Trenger du bare tall og terning uten listehåndtering, ligger det en enklere tilfeldig tallgenerator her også. Og skal du lage et passord, bør du bruke passordgeneratoren, som er bygget for formålet.
Siden bruker crypto.getRandomValues, som henter tilfeldighet fra operativsystemets entropikilder og er beregnet på kryptografi. Utfallene kan ikke forutsies eller gjenskapes. Skulle nettleseren mangle funksjonen, faller siden tilbake på Math.random, og da står det i kalkulatoren hvilken kilde som er i bruk.
En pseudotilfeldig generator regner ut en tallrekke fra et startpunkt kalt frø. Samme frø gir alltid samme rekke, og rekken er forutsigbar for den som kjenner algoritmen. En kryptografisk generator henter uforutsigbare bit fra maskinvare og operativsystem, og er konstruert slik at neste tall ikke kan gjettes selv om du kjenner mange tidligere.
Til uformelle trekninger fungerer det godt, særlig hvis du dokumenterer deltakerlisten før du trekker og tar vare på resultatet. Trekninger med pengepremier eller andre lotterier kan være omfattet av lotteriloven og krever ofte tillatelse. Reglene endres, så sjekk hva som gjelder hos Lotteritilsynet før du arrangerer noe med premie.
Det er troen på at et utfall blir mer sannsynlig fordi det ikke har kommet på en stund. Har mynten vist kron fem ganger, er sjansen for mynt fortsatt nøyaktig 50 prosent på neste kast. Mynten har ingen hukommelse. Loven om store tall sier at andelen jevner seg ut over mange kast, ikke at etterslepet skal hentes inn.
Fordi ekte tilfeldighet klumper seg. Trekker du med tilbakelegging fra ti navn, er sjansen for at det samme kommer to ganger på rad 10 prosent hver gang. Over mange trekk skjer det stadig. Mennesker forventer en jevnere fordeling enn tilfeldigheten faktisk gir, og tolker derfor helt normale klumper som feil.
Publiser deltakerlisten før trekningen, si på forhånd hvor mange som skal trekkes og etter hvilken regel, gjennomfør trekningen der andre kan se den, og ta vare på resultatet med dato. Rekkefølgen er poenget: en liste som først vises etter at vinneren er kjent, kan ingen kontrollere.