Ukjent program Mønster v23
Martin har skrevet følgende kode:
import random
N = 100000
samlet_gevinst = 0
for i in range(N):
mynt1 = random.randint(0, 1)
mynt2 = random.randint(0, 1)
resultat = mynt1 + mynt2
gevinst = -50 + 40*resultat
samlet_gevinst += gevinst
print(samlet_gevinst)
Forklar hva Martin ønsker å simulere og regne ut.
Hva blir det eksakte svaret på oppgaven Martin ønsker å løse?
Fasit
Martin simulerer et spill der man kaster to mynter og beregner samlet gevinst etter spill.
Løsningsforslag
Programmet simulerer et spill der man kaster to mynter. Vi går gjennom linje for linje:
N = 100000— antall spill som simuleres.samlet_gevinst = 0— telleren for total gevinst starter på 0.for i in range(N):— løkken kjøres ganger.mynt1 = random.randint(0, 1)— kaster den første mynten.randint(0, 1)gir tilfeldig 0 eller 1 med lik sannsynlighet (0 = kron, 1 = mynt).mynt2 = random.randint(0, 1)— kaster den andre mynten på samme måte.resultat = mynt1 + mynt2— teller antall mynt (1-ere) i kastet.resultatkan være 0, 1 eller 2.gevinst = -50 + 40 * resultat— beregner gevinsten for dette spillet:- 0 mynt:
- 1 mynt:
- 2 mynt:
samlet_gevinst += gevinst— legger gevinsten til den løpende summen.print(samlet_gevinst)— skriver ut total gevinst etter alle spill.
Martin ønsker altså å simulere et myntkast-spill og estimere den samlede gevinsten (eller tapet) etter spill.
La = antall mynt (1-ere) i to kast. er binomisk fordelt med og .
Sannsynlighetene er:
Forventet gevinst per spill:
Eksakt total samlet gevinst over spill:
Martin kan forvente et tap på etter spill.