Tilfeldighet


Tilfeldige verdier

Python kan brukes for å generere «pseudo-tilfeldige» verdier. Med dette mener vi verdier som fremstår som tilfeldige, men som egentlig er generert basert på tidspunktet programmet starter. Om du startet det samme programmet på to ulike maskiner akkurat samtidig, ville begge programmene altså generert den samme verdien.

import random

x = random.random() # et flyttall slik at 0.0 <= x < 1.0
print(x)
import random

x = random.randrange(10) # et heltall slik at 0 <= x < 10
print(x)
import random

dice_roll = random.randrange(1, 7) # et heltall slik at 1 <= x < 7
print(dice_roll)
import random

character = random.choice('abcdef') # en bokstav fra strengen
print(character)
import random

options = ['heads', 'tails']
coin_flip = random.choice(options) # et element i listen
print(coin_flip)
Frø

Når man skal feilsøke noe, er det en fordel om programmet oppfører seg helt likt hver gang man kjører programmet. Introduksjonen av tilfeldige verdier gjør dette i utgangspunktet vanskelig; men siden verdiene er pseudo-tilfeldige, finnes det en løsning. For å late som vi starter programmet på akkurat samme tidspunkt hver gang det kjøres (slik at det alltid blir de samme «tilfeldige» verdiene som blir generert), kan vi manuelt sette «frøet» (engelsk: seed) til tilfeldighetsgeneratoren. Det er denne verdien som ellers ville blitt bestemt av starttidspunktet.

import random
random.seed(42) # vi setter frøet til 42 (kan være hva som helst)

x = random.random()
print(x)

x = random.random()
print(x)

Selv om vi får ulike verdien innad i én kjøring av programmet, vil det være de samme verdiene som genereres hver gang man kjører programmet på nytt. Prøv å endre frøet i programmet over; observer at du får de samme verdiene fra generatoren så lenge frøet er likt.

Flere muligheter

Random-modulen har massevis av mer avanserte muligheter også, for eksempel å velge tilfeldige tall fra en rekke ulike fordelinger (uniform, normal, gammavariat, etc.). Det finnes også funksjoner for å velge flere tilfeldige elementer fra en samling med og uten tilbakelegging (henholdsvis random.choices og random.sample), samt for å blande en samling (med random.shuffle). Se offisiell dokumentasjon for mer informasjon.