Tilfældighed
-en, -er, -erne
Når man koder kan man bruge funktioner, der finder tilfældige tal. Det er praktisk, når man f.eks. laver et spil og det skal være en tilfældighed om modstanderen skal møde ét monster eller et andet monster.
Men hvordan finder computeren egentligt et tilfældigt tal og kan man regne ud hvilket tal, der kommer, så det ikke længere er tilfældigt?
Normalt når man programmere til spil, så vil computeren bruge det, der hedder pseudo-tilfældige tal. Det betyder tal der ligner at det er tilfældige tal, men uden at være det. Computeren kører derfor en bestemt algoritme, som udvælger nogle tal i noget der ligner tilfældig rækkefølge. Problemet er her at hackere matematisk vil kunne regne ud hvad, der bliver det næste tilfældige tal i rækken og derfor må det ikke bruges i sikkerhedsmæssige sammenhænge.
I sikkerhedsmæssige sammenhænge bruger man noget, der hedder "sande" tilfældige tal. Her tager man input fra den virkelige verden, og bruger det som en del af tilfældigheden. Det kan være at computeren bruger det, at du trykker på en knap, til at finde et tilfældigt tal. Hvis computeren skal finde et tal mellem 1 og 10, så kan det være ud fra hvornår du trykkede på musen første gang i forhold til anden gang. Her kan der f.eks. være 0.234245 sekunders forskel. Computeren kan så bruge det sidste decimal i tallet, altså "5" til at være tallet mellem 1 og 10. Her kan hackere ikke vide hvornår du trykker på musen mellem første og anden gang og derfor bliver tallet tilfældigt.
Eksempler på brug af ordet "spænding"
- Det var en ren tilfældighed
- Du skal finde et tilfældigt tal
- Det kan du ikke vide, det var en tilfældighed
Makecode
Arduino
Her findes der et tilfældigt nummer fra 1-10 hvert sekund
int randNumber; void setup() { Serial.begin(9600); } void loop() { randNumber = random(1, 11); Serial.println(randNumber); delay(1000); }
Python
I koden så har vi to værdier a og b og der findes så et tilfældigt tal fra 1-10
import random a=1 b=10 randomNumber = random.randint(a, b) print(randomNumber)