Terningspill med simulering S1 V26
Erik og Kris spiller et terningspill. Spillet foregår over flere runder. Nedenfor ser du reglene som gjelder for én runde.
- Erik kaster en terning med seks sider, nummerert med sifrene 1 til 6.
- Kris kaster to terninger. Hver terning har fire sider, nummerert med sifrene 1 til 4.
- Erik sammenligner sin terning med den terningen til Kris som viser høyest verdi. Dersom terningen til Erik viser en høyere verdi, får han 1 poeng. Dersom terningen til Erik ikke viser en høyere verdi, får Kris 1 poeng.
Bestem sannsynligheten for at Erik får poeng i den første runden de spiller.
Erik og Kris spiller flere runder.
Bruk simulering til å bestemme sannsynligheten for at Erik får 100 poeng før Kris.
Fasit
Simulering med 100 000 spill gir
LøsningsforslagKI-generert
La være antall øyne Erik kaster ( er uniformt fordelt på ) og la der og er de to D4-terningene til Kris (hver uniformt fordelt på ).
Erik vinner runden hvis .
Fordeling av :
Vi bruker at , siden og er uavhengige.
Dermed er .
Table: Sannsynlighetsfordeling for {.tall}
| 1 | |
| 2 | |
| 3 | |
| 4 |
Beregning av :
Vi betinger på verdien av og bruker at :
Siden (Erik er svakere enn Kris i hver runde), forventer vi at Erik sjeldnere når 100 poeng først. Vi estimerer sannsynligheten med en Monte Carlo-simulering.
Python-kode:
from random import randint
N = 100_000 # antall spill vi simulerer
erik_vinner_spillet = 0 # teller spill Erik vinner
for _ in range(N):
erik_poeng = 0
kris_poeng = 0
# Spill runder til en av dem når 100 poeng
while erik_poeng < 100 and kris_poeng < 100:
erik = randint(1, 6) # Eriks D6
kris = max(randint(1, 4), randint(1, 4)) # Kris' høyeste D4
if erik > kris:
erik_poeng += 1
else: # likt gir Kris poeng
kris_poeng += 1
if erik_poeng >= 100: # den som når 100 først, vinner
erik_vinner_spillet += 1
print(f"P(Erik når 100 poeng først) ≈ {erik_vinner_spillet / N:.4f}")
Vi spiller hele spill. For hvert spill kaster vi terninger runde for runde og deler ut poeng etter reglene, helt til en av spillerne når 100 poeng. Den som kommer først til 100, har alltid flest poeng, så vi teller bare opp hvor stor andel av spillene Erik vinner. Siden Erik vinner hver enkelt runde med sannsynlighet , forventer vi at andelen blir tydelig under 50 %.
Resultat: Med 100 000 simulerte spill (seed 42) fikk vi P ≈ 0.2778.
Sensorveiledning
Oppgaven gir til sammen 4 poeng
Kandidater som har en god strategi, men ikke kommer fram til svaret kan få 1 poeng.
Simulering med en god strategi, men feil svar, kan få 1 poeng. Simulering med riktig strategi, men med små feil som fører til feil svar kan få 2 poeng.