Bruk programmering til å simulere tilfeldige hendelser og estimere sannsynligheter.
La datamaskinen kaste terningen
Forestill deg at du vil finne ut hvor sannsynlig det er a sla to seksere med to terninger. Du kan selvfolgelig sette deg ned og beregne det teoretisk -- men du kan ogsa la datamaskinen gjore forsokat for deg. Ikke bare en gang, men hundre tusen ganger.
Denne metoden kalles simulering, og den er et av de kraftigste verktoyene i moderne matematikk og vitenskap. Vaermeldinger, medisinsk forskning, okonomiske prognoser -- alt bruker simulering. Og det beste er at det er overraskende enkelt a komme i gang med Python.
random-modulen -- tilfeldighetens verktoy
For a simulere tilfeldige forsok trenger vi tilfeldige tall. Python har en innebygd modul for dette som heter random:
import random
# Simuler et terningkast
terning = random.randint(1, 6)
print(f"Du slo {terning}")random.randint(1, 6) gir et tilfeldig heltall mellom 1 og 6 -- akkurat som en ekte terning. Hver gang du kjorer programmet, far du (sannsynligvis) et annet tall.
Na kan vi simulere mange kast og telle hvor ofte en bestemt hendelse inntreffer:
import random
antall_kast = 10000
antall_seksere = 0
for i in range(antall_kast):
kast = random.randint(1, 6)
if kast == 6:
antall_seksere += 1
simulert = antall_seksere / antall_kast
print(f"Simulert P(sekser) = {simulert:.4f}")
print(f"Teoretisk P(sekser) = {1/6:.4f}")Den simulerte sannsynligheten er antall gunstige utfall delt pa totalt antall forsok:
Med 10 000 kast far vi typisk noe naert , men ikke eksakt likt. Og det er helt normalt -- simulering gir et estimat, ikke et eksakt svar.
Store talls lov -- jo flere, jo bedre
Her er et viktig poeng: med bare 10 kast kan du fa helt ville resultater. Kanskje 0 seksere, kanskje 4. Men med 100 000 kast vil den simulerte sannsynligheten nesten alltid ligge veldig naert den teoretiske.
Dette kalles store talls lov: nar du gjentar et tilfeldig forsok mange nok ganger, vil den relative frekvensen nærme seg den teoretiske sannsynligheten.
Vi kan demonstrere dette med myntkast:
import random
for antall_kast in [10, 100, 1000, 10000, 100000]:
mynt = 0
for i in range(antall_kast):
if random.randint(0, 1) == 1:
mynt += 1
print(f"n = {antall_kast:>7}: P(mynt) = {mynt/antall_kast:.4f}")Typisk resultat:
n = 10: P(mynt) = 0.6000
n = 100: P(mynt) = 0.4700
n = 1000: P(mynt) = 0.5130
n = 10000: P(mynt) = 0.4987
n = 100000: P(mynt) = 0.5003Med 10 kast svinger det mye. Med 100 000 kast er vi nesten noyaktig pa 0,5. Store talls lov i aksjon!
Sammensatte forsok -- nar det blir spennende
Simulering er spesielt nyttig for sammensatte forsok der det er vanskelig a beregne sannsynligheten teoretisk. La oss se pa et klassisk eksempel: summen av to terninger.
import random
antall_forsok = 100000
antall_sju = 0
for i in range(antall_forsok):
terning1 = random.randint(1, 6)
terning2 = random.randint(1, 6)
if terning1 + terning2 == 7:
antall_sju += 1
print(f"P(sum = 7) = {antall_sju/antall_forsok:.4f}")Resultatet blir omtrent , som stemmer med den teoretiske verdien . Det finnes nemlig 6 kombinasjoner som gir summen 7: , av totalt mulige utfall.
Men hva med virkelig kompliserte problemer? Ta bursdagsparadokset: I en klasse med 23 elever, hva er sannsynligheten for at minst to deler bursdag? Svaret er over 50 % -- noe de fleste finner helt utrolig. Med simulering kan vi verifisere dette:
import random
treff = 0
for i in range(100000):
bursdager = [random.randint(1, 365) for _ in range(23)]
if len(bursdager) != len(set(bursdager)):
treff += 1
print(f"P(felles bursdag) = {treff/100000:.4f}")Resultatet? Omtrent -- altså rett over 50 %. Simuleringen bekrefter det overraskende teoretiske svaret!
Oppsummering
Vi har utforsket hvordan Python kan brukes til a simulere tilfeldige forsok:
- random-modulen gir oss tilfeldige tall (random.randint(a, b))
- En simulering gjentar et forsok mange ganger og estimerer sannsynligheter
- Simulert sannsynlighet
- Store talls lov garanterer at estimatet blir bedre jo flere forsok vi gjor
- Sammensatte forsok (to terninger, kuletrekking, bursdagsparadokset) er enkle a simulere men kan være vanskelige a beregne teoretisk
Simulering er et uunnværlig verktoy i moderne vitenskap. Vaermeldinger, medisinsk forskning og finansanalyse -- alt bruker simulering for a handtere usikkerhet. Du har na verktoyene til a gjore det samme!
Dette kapitlet er skrevet av Anthropics toppmodeller (Claude Opus og Claude Fable) og er foreløpig ikke manuelt gjennomgått — kvalitetskontrollen gjøres av uavhengige KI-agenter, og innmeldte feil rettes fortløpende. Funnet en feil? Meld fra, så retter vi den. Les mer om hvordan innholdet lages.