Programmeringskurs: 3.5 Løkker som genererer innhold automatisk
Simulering av terningkast
Listene vi har sett på til nå har hatt innhold. De har vært fylt med et visst antall tall som vi har kunnet traversere, eller gå gjennom.
Eksempelet med terningkastene, viste at vi må gjenta et forsøk veldig mange ganger for å få et riktig svar for hva sannsynligheten er for å få en firer i et terningkast. Nå skal vi se hvordan vi kan simulere et kast av en terning 5000 ganger. Dermed kan vi gjøre beregninger på dataene som koden har genererer.
Simuler 5000 tilfeldige kast med terning. Bruk resultatet til å regne ut sannsynligheten for å få en firer når vi triller en terning.
Hypotese: Vi tror sannsynligheten skal bli ganske nær #\tfrac{1}{6}#.
LØSNING:
Resultatet av hvert terningkast er et tilfeldig tall mellom 1 og 6. For å velge tilfeldige tall importerer vi funksjonen #\texttt{randint}# fra modulen #\texttt{random}#.
For å simulerer 5000 terningkast bruker vi en #\texttt{for}#-løkke som går fra 1 til 5000. Det gjør vi med koden
#\texttt{for i in range(5000)}#
For hver gang løkken gjentas velger vi et tifeldig tall mellom 1 og 6 med koden #\texttt{kast = randint(1, 6)}#. Deretter sjekker vi om kastet er en firer med #\texttt{if}#-setningen
#\texttt{if(kast == 4):}#
Hvis #\texttt{kast}# er lik 4, øker vi variabelen antallfirere med 1 ved å bruke koden #\texttt{antallFirere += 1}#. (Hvis #\texttt{kast}# ikke er lik 4 gjør ikke koden noe mer.)
Når vi har gjentatt løkken 5000 ganger, finner vi sannsynligheten ved å regne ut
#\frac{\texttt{antallFirere}}{5000}#
Til slutt skriver vi ut resultatet av simuleringen.
Nå kan vi kjøre koden ved å trykke på . Da ser vi at sannsynligheten i vår simulering er ganske lik hypotesen #\frac{1}{6}\approx 0.1667#, men ikke helt. Dersom vi kjører koden flere ganger ser vi at antall firere varierer, det viser at koden vår faktisk fungerer og at vi simulerer 5000 tilfeldige kast.
Sannsynligheten for å trille en 4-er med en terning er ikke helt presis i simuleringen, men hvis vi øker antall kast, vil andelen firere og dermed sannsynligheten blir mer nøyaktig. Prøv selv å endre i koden ovenfor slik at vi gjør 100 000 kast.