Hoppa till innehållet
AI-grafen
E· Universitetstatistik-sannolikhet· ca 60 min· utvecklande· verifierad 2026-09-20

Monte Carlo-metoder

Kunna skatta sannolikheter och integraler med simulering och bedöma antalet körningar som krävs.

Förkunskaper

Intuition

Monte Carlo: när något är svårt att räkna ut exakt — simulera det många gånger och räkna.

Sannolikheten att summan av tre tärningar blir minst 15? Du kan räkna kombinatoriskt. Eller kasta 100 000 gånger i kod och räkna andelen. Svaret blir lika användbart och tar tre rader.

Felet minskar som 1/√n. Det betyder:

  • 100 körningar → osäkerhet ~10 %
  • 10 000 → ~1 %
  • 1 000 000 → ~0,1 %

Hundra gånger fler körningar för tio gånger bättre precision. Det är metodens pris — och varför man inte simulerar sig till godtycklig noggrannhet.

Kod

import numpy as np
rng = np.random.default_rng(0)

# 1. Sannolikhet: tre tärningar, summa ≥ 15
kast = rng.integers(1, 7, size=(200_000, 3)).sum(axis=1)
p = float((kast >= 15).mean())
se = float(np.sqrt(p * (1 - p) / len(kast)))
print(f"{p:.4f} ± {1.96*se:.4f}")          # 0.0925 ± 0.0013

# 2. Integral: arean under en kurva som saknar enkel primitiv
f = lambda x: np.exp(-x**2)
x = rng.uniform(0, 2, 500_000)
print(round(float(f(x).mean() * 2), 4))     # 0.8821  (exakt: 0.88208)

# 3. Osäkerhet i ett resultat (parametrisk bootstrap)
acc = rng.binomial(200, 0.85, size=10_000) / 200
print(np.percentile(acc, [2.5, 97.5]).round(3))    # [0.8 0.9]

Var det används i ML: bootstrap-konfidensintervall, dropout vid inferens som osäkerhetsskattning (MC dropout), sampling ur generativa modeller, förväntad nytta i beslutsanalys, och simulerad miljö i RL.

Beräkna alltid felmarginalen. En Monte Carlo-siffra utan osäkerhet är en gissning med onödigt många decimaler.

Behärskning innebär

  • Skattar sannolikheter och integraler med simulering
  • Bedömer hur många körningar som krävs
  • Förklarar 1/√n-konvergensen

Logga in för att göra övningarna och bygga upp din behärskning.

Källor

Alla källor och licenser