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.
a) \(\underline{\underline{P(\text{Erik vinner runde}) = \dfrac{23}{48} \approx 47{,}9 \,\%}}\)
b) Simulering med 100 000 spill gir \(\underline{\underline{P(\text{Erik når 100 poeng før Kris}) \approx 27{,}8 \,\%}}\)
a
La \(E\) være antall øyne Erik kaster (\(E\) er uniformt fordelt på \(\{1, 2, 3, 4, 5, 6\}\)) og la \(M = \max(K_1, K_2)\) der \(K_1\) og \(K_2\) er de to D4-terningene til Kris (hver uniformt fordelt på \(\{1, 2, 3, 4\}\)).
Erik vinner runden hvis \(E > M\).
Fordeling av \(M\):
Vi bruker at \(P(M \leq k) = P(K_1 \leq k) \cdot P(K_2 \leq k) = \left(\dfrac{k}{4}\right)^2\), siden \(K_1\) og \(K_2\) er uavhengige.
Dermed er \(P(M = k) = P(M \leq k) - P(M \leq k-1) = \dfrac{k^2 - (k-1)^2}{16} = \dfrac{2k - 1}{16}\).
| \(k\) | \(P(M = k)\) |
|---|---|
| 1 | \(\dfrac{1}{16}\) |
| 2 | \(\dfrac{3}{16}\) |
| 3 | \(\dfrac{5}{16}\) |
| 4 | \(\dfrac{7}{16}\) |
Beregning av \(P(E > M)\):
Vi betinger på verdien av \(M\) og bruker at \(P(E > k) = \dfrac{6 - k}{6}\):
\(P(\text{Erik vinner runden}) = \dfrac{23}{48} \approx 47{,}9 \,\%\)
b
Siden \(p = \frac{23}{48} < \frac{1}{2}\) (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:
import numpy as np
rng = np.random.default_rng(42)
N = 100_000
erik_vinner_spillet = 0
for _ in range(N):
erik_poeng = 0
kris_poeng = 0
while erik_poeng < 100 and kris_poeng < 100:
e = rng.integers(1, 7) # D6: 1–6
m = max(rng.integers(1, 5), # max av to D4: 1–4
rng.integers(1, 5))
if e > m:
erik_poeng += 1
else:
kris_poeng += 1
if erik_poeng >= 100:
erik_vinner_spillet += 1
print(f"P(Erik når 100 poeng først) ≈ {erik_vinner_spillet / N:.4f}")
Resultat: Med 100 000 simulerte spill (seed 42) fikk vi P ≈ 0.2778.
\(P(\text{Erik når 100 poeng før Kris}) \approx 27{,}8 \,\%\)