UtkastBoka ble skrevet det første døgnet etter at læreplanen kom, og kvalitetssikres nå kapittel for kapittel gjennom høsten 2026. Kapitler merket «Kvalitetssikret» er gjennomgått; resten er utkast du gjerne må lese og melde fra om.
Fant du en feil, eller savner du noe i dette kapittelet?Alt leses, og feil rettes fortløpende.
4.8
Simulering av tilfeldige forsøk

4.8 Simulering av tilfeldige forsøk

Å simulere forsøk digitalt (rekneark og programmering) og samanlikne med teoretisk sannsyn.

45 min
7 oppgaver
SimuleringReknearkPython
Din fremgang i kapitlet
0 / 7 oppgaver

Den tredje vegen til eit svar

Så langt har vi hatt to vegar til eit sannsyn: rekne det ut frå ein modell, eller måle det med relative frekvensar frå verkelege data.

Den tredje vegen er å la maskinen utføre forsøket for oss — tusenvis av gonger, på eit sekund. Det blir kalla simulering, og det er grunnen til at mange problem som var uoverkomelege for hundre år sidan, er rutine i dag.

Simulering er ikkje ein erstatning for utrekning. Ho er eit supplement som er uunnverleg når reknestykket blir for vanskeleg, og eit kontrollverktøy når du ikkje er sikker på at utrekninga di er rett.

Simulering
Å simulere eit stokastisk forsøk er å la ei datamaskin utføre forsøket mange gonger etter ein sannsynsmodell vi sjølve har gitt henne, og bruke den relative frekvensen som anslag på sannsynet.

P(A)≈talet pa˚ gonger A inntrafftalet pa˚ simulerte forsøkP(A) \approx \frac{\text{talet på gonger } A \text{ inntraff}}{\text{talet på simulerte forsøk}}

Grunngivinga er store tals lov frå kapittel 4.1: med nok gjentakingar legg den relative frekvensen seg inntil sannsynet.

Framgangsmåten

Kvar simulering følgjer dei same fem stega, anten du bruker rekneark eller programmering:

1. Bestem modellen. Kva er utfalla, og kor sannsynleg er kvart av dei?
2. Simuler eitt forsøk. Trekk tilfeldige tal etter modellen.
3. Avgjer om hendinga inntraff. Skriv vilkåret som ein test som gir sant eller usant.
4. Gjenta mange gonger og tel. Hald ein teljar over kor mange gonger hendinga inntraff.
5. Del på talet på forsøk, og tolk svaret.

Modellen er det viktigaste — og det maskinen ikkje kan gjere for deg. Simuleringa måler den modellen du gav henne, ikkje røynda. Er modellen gal, blir svaret gale same kor mange forsøk du køyrer.

✏️Døme 1

Vi vil anslå sannsynet for at summen av to terningar blir minst 10. Skildre ei simulering i rekneark, og samanlikn med den teoretiske verdien.

Løysing:

Modellen. To terningar, kvar med seks like sannsynlege utfall.

Eitt forsøk. I celle A1 og B1 legg vi eitt terningkast kvar:

A1:  =TILFELDIGMELLOM(1;6)
B1:  =TILFELDIGMELLOM(1;6)

I C1 reknar vi summen:

C1:  =A1+B1

Testen. I D1 skriv vi 1 når hendinga inntraff, og 0 elles:

D1:  =HVIS(C1>=10;1;0)

Gjenta og tel. Vi merkjer A1:D1 og dreg nedover til rad 5000. Så tel vi:

F1:  =SUMMER(D1:D5000)

Del og tolk.

F2:  =F1/5000

Ei køyring gir typisk eit tal rundt 0,170{,}17. Trykkjer vi F9, blir arket rekna om med nye tilfeldige tal, og vi får eit litt anna tal kvar gong — det er uvissa i sjølve simuleringa.

Den teoretiske verdien. Summen blir minst 10 for para

(4,6), (5,5), (6,4), (5,6), (6,5), (6,6)(4,6),\ (5,5),\ (6,4),\ (5,6),\ (6,5),\ (6,6)

Det er 6 av dei 36 utfalla:

P(minst 10)=636=16≈0,167P(\text{minst 10}) = \frac{6}{36} = \frac{1}{6} \approx 0{,}167

Simuleringa treffer altså godt. Merk rekkjefølgja her: vi kunne ha rekna det ut med ein gong, og simuleringa var strengt teke unødvendig. Poenget er at metoden verkar på eit problem vi kan kontrollere — då tør vi bruke han på problem vi ikkje kan kontrollere.

Svar: Simuleringa gir omtrent 0,170{,}17; den teoretiske verdien er 16≈0,167\displaystyle \frac{1}{6} \approx 0{,}167.

📝Oppgave 1
Rekneark. Set opp ei simulering av 2000 kast med to terningar, etter framgangsmåten i døme 1.
a

Kva formel gir eitt terningkast?

b

Skriv ein formel i D1 som gir 1 når summen i C1 er nøyaktig 7, og 0 elles.

c

Kva er det teoretiske sannsynet for sum 7? Oppgi forkorta brøk.

d

Kor mange av dei 2000 kasta ventar du gir sum 7?

e

Trykk F9 fem gonger og noter anslaget kvar gong. Skildre kor mykje tala varierer.

Løs oppgaven

Simulering i Python

I eit program blir dei fem stega til fem linjer. Mønsteret er alltid det same:

import random

antall = 100000          # kor mange forsøk
treff = 0                # teljaren

for i in range(antall):
    # eitt forsøk
    # test om hendinga inntraff
    # auk teljaren om ho gjorde det
    pass

print(treff / antall)

Fordelen framfor rekneark er at du kan køyre langt fleire forsøk, og at forsøket kan vere meir samansett enn éi rad med celler.

✏️Døme 2

I eit spel kastar du to terningar. Du vinn dersom minst éin av dei viser 5 eller 6.

a) Skriv eit program som anslår vinnarsannsynet.
b) Bestem vinnarsannsynet ved rekning, og samanlikn.

Løysing:

a) Vi følgjer dei fem stega.

import random

antall = 100000
treff = 0

for i in range(antall):
    t1 = random.randint(1, 6)
    t2 = random.randint(1, 6)
    if t1 >= 5 or t2 >= 5:
        treff = treff + 1

print(treff / antall)

- random.randint(1, 6) er eitt terningkast — eitt forsøk.
- if t1 >= 5 or t2 >= 5 er testen. or betyr «eller», og det er den inklusive «eller» frå kapittel 4.4: vinn du med begge, tel det òg — testen.
- treff = treff + 1 aukar teljaren. Legg merke til at eitt likskapsteikn tilordnar ein verdi; det er ikkje ei likning — teljaren.
- Siste linja deler på talet på forsøk — del og tolk.

Programmet skriv ut eit tal rundt 0,5560{,}556.

b) Vi reknar med komplementet, slik kapittel 4.2 lærte oss. Det motsette av «minst éin viser 5 eller 6» er «ingen av dei viser 5 eller 6», altså at begge viser 1, 2, 3 eller 4.

For éin terning:

P(høgst 4)=46=23P(\text{høgst 4}) = \frac{4}{6} = \frac{2}{3}

Terningane er uavhengige, så vi gongar:

P(ingen 5 eller 6)=23⋅23=49P(\text{ingen 5 eller 6}) = \frac{2}{3} \cdot \frac{2}{3} = \frac{4}{9}

P(vinn)=1−49=99−49=59≈0,556P(\text{vinn}) = 1 - \frac{4}{9} = \frac{9}{9} - \frac{4}{9} = \frac{5}{9} \approx 0{,}556

Simuleringa og utrekninga stemmer overeins. Då veit vi to ting: utrekninga er truleg rett, og programmet gjer truleg det det skal.

Svar: a) Eit program som tel treff i 100 000 kast; det gir omtrent 0,5560{,}556. b) 59≈0,556\displaystyle \frac{5}{9} \approx 0{,}556.

📝Oppgave 2

Gjer det same som i døme 2. I eit anna spel kastar du tre terningar, og du vinn dersom minst éin av dei viser seksar.

a

Skriv testlinja i programmet som avgjer om du vinn.

b

Bestem sannsynet for at éin terning ikkje viser seksar. Oppgi forkorta brøk.

c

Bestem sannsynet for at ingen av dei tre viser seksar. Oppgi som brøk.

d

Bestem vinnarsannsynet. Oppgi som brøk.

e

Skriv vinnarsannsynet som desimaltal med tre desimalar.

Løs oppgaven

Å lese simuleringsprogram som andre har skrive

Ei vanleg eksamensoppgåve gir deg eit ferdig program og spør kva sannsyn det reknar ut. Framgangsmåten er å lese programmet i to omgangar:

Først komponentane, linje for linje: kva er konstantane, kva blir trekt tilfeldig, kva er testen, kva blir talt, kva blir skrive ut?

Så flyten, altså kva som skjer når programmet køyrer: følg to gjennomløp av løkka og hald styr på kva kvar variabel inneheld etter kvart steg. Deretter «og så vidare» for resten.

Nøkkelen ligg nesten alltid i testlinja. Ho fortel nøyaktig kva hending programmet tel.

✏️Døme 3

Forklar kva sannsyn programmet under anslår, og kvifor simulering er eit rimeleg val her.

import random

n = 200000
teller = 0

for i in range(n):
    p = 1
    for k in range(3):
        p = p * random.randint(1, 6)
    if p > 100:
        teller = teller + 1

print(teller / n)

Løysing:

Komponentane:

- n = 200000 er talet på forsøk, og teller = 0 er teljaren. Begge blir sette før løkka byrjar.
- Den ytre løkka for i in range(n) gjentek heile forsøket 200 000 gonger.
- p = 1 nullstiller — eller rettare, einstiller — produktet framfor kvart forsøk. Det må stå inne i den ytre løkka; stod det utanfor, ville produktet ha vakse gjennom alle forsøka.
- Den indre løkka for k in range(3) køyrer tre gonger. Kvar gong blir p gonga med eit nytt terningkast. Etter tre rundar er p produktet av tre terningkast.
- if p > 100 er testen: er produktet større enn 100?
- teller = teller + 1 aukar teljaren når testen slår til.
- print(teller / n) skriv ut delen — altså anslaget.

Flyten, to gjennomløp:

Første gjennomløp av den ytre løkka. p blir sett til 1. Sei at terningane i den indre løkka gir 4, 6 og 5:

1⋅4=44⋅6=2424⋅5=1201 \cdot 4 = 4 \qquad 4 \cdot 6 = 24 \qquad 24 \cdot 5 = 120

Testen 120>100120 > 100 slår til, og teller blir 1.

Andre gjennomløp. p blir sett til 1 igjen. Sei at terningane gir 2, 3 og 6:

1⋅2=22⋅3=66⋅6=361 \cdot 2 = 2 \qquad 2 \cdot 3 = 6 \qquad 6 \cdot 6 = 36

Testen 36>10036 > 100 slår ikkje til, og teller står stille på 1.

Og så vidare, 200 000 gonger. Til slutt blir teljaren delt på 200 000.

Kva sannsyn? Programmet anslår

P(produktet av tre terningkast er større enn 100)P(\text{produktet av tre terningkast er større enn } 100)

Kvifor simulering? Utfallsrommet har 63=2166^3 = 216 utfall, og det finst ingen enkel formel for kor mange av dei som gir produkt over 100 — vi måtte ha gått gjennom alle 216 og talt. Det let seg gjere, men det er tungvint for hand. Simuleringa gir svaret på eit sekund, og gir dessutan ein metode som framleis verkar om vi går opp til fire eller fem terningar, der opptellinga blir uoverkomeleg.

Svar: Programmet anslår sannsynet for at produktet av tre terningkast blir større enn 100.

📝Oppgave 3
Programanalyse. Studer programmet:

import random

n = 50000
teller = 0

for i in range(n):
    kort = random.sample(range(1, 53), 5)
    hoy = 0
    for k in kort:
        if k > 48:
            hoy = hoy + 1
    if hoy >= 1:
        teller = teller + 1

print(teller / n)

Korta er nummererte 1 til 52, og dei fire essa har nummera 49, 50, 51 og 52.

a

Kva gjer random.sample(range(1, 53), 5)?

b

Kva tel variabelen hoy?

c

Kva sannsyn anslår programmet?

d

Korleis måtte testlinja if hoy >= 1: endrast for å anslå sannsynet for nøyaktig eitt ess?

e

Bestem sannsynet for at ingen av dei fem korta er ess, ved rekning. Svar med tre desimalar.

Løs oppgaven

Kor nøyaktig er ei simulering?

Eit simuleringssvar er ei måling, ikkje ein fasit. To køyringar av same program gir ulike tal, og skilnaden er ikkje ein feil — han er uvissa.

Den viktigaste regelen å hugse er denne:

For å halvere uvissa må du firedoble talet på forsøk.

Grunnen er at uvissa søkk som 1n\dfrac{1}{\sqrt{n}}: firedoblar du nn, blir n\sqrt{n} dobla, og uvissa blir halvert.

Som grov regel hamnar anslaget nesten alltid innanfor ±1n\pm\dfrac{1}{\sqrt{n}} frå det sanne sannsynet. Det er ein grov øvre feilmargin (same tommelfingerregel som i kapittel 3.1), ikkje det typiske avviket — det typiske avviket er som regel mindre. Det betyr at dei første tusen forsøka gir mykje, medan dei neste hundre tusen gir stadig mindre att for arbeidet.

Difor skal du aldri oppgi eit simuleringssvar med fleire desimalar enn simuleringa kan bere. Har du køyrt 1000 forsøk, er «0,3427» ein påstand du ikkje har dekning for; «omtrent 0,34» er ærleg.

✏️Døme 4

Figuren over viser 10 000 simulerte kast med to terningar samanlikna med dei teoretiske sannsyna.

a) Kvifor er søylene høgast i midten?
b) Det største avviket mellom simulert og teoretisk del er 0,00860{,}0086, ved sum 5. Er det stort eller lite?
c) Kor mange kast måtte vi ha køyrt for å halvere uvissa?

Løysing:

a) Fordi summane i midten kan oppnåast på flest måtar. Sum 7 kan kome av 6 av dei 36 talpara, medan sum 2 berre kan kome av eitt — nemleg (1,1)(1,1).

P(sum 7)=636=16≈0,167P(sum 2)=136≈0,028P(\text{sum } 7) = \frac{6}{36} = \frac{1}{6} \approx 0{,}167 \qquad P(\text{sum } 2) = \frac{1}{36} \approx 0{,}028

Dette er det same poenget som i kapittel 4.3: dei 11 summane er ikkje like sannsynlege, sjølv om dei 36 para er det.

b) Det er lite. Avviket ligg ved sum 5, og skal samanliknast med sannsynet der:

P(sum 5)=436≈0,111P(\text{sum } 5) = \frac{4}{36} \approx 0{,}111

0,00860,111≈0,08\frac{0{,}0086}{0{,}111} \approx 0{,}08

Avviket er omtrent 8 % av verdien.

Ein nyttig målestokk er den grove øvre feilmarginen: med 10 000 forsøk hamnar anslaget nesten alltid innanfor

±110 000=±1100=±0,01\pm\frac{1}{\sqrt{10\,000}} = \pm\frac{1}{100} = \pm 0{,}01

Det største avviket vårt, 0,00860{,}0086, ligg innanfor.

c) Uvissa søkk som 1n\displaystyle \frac{1}{\sqrt{n}}. Skal ho halverast, må n\sqrt{n} doblast, og då må nn firedoblast:

4⋅10 000=40 000 kast4 \cdot 10\,000 = 40\,000 \text{ kast}

Svar: a) Fordi dei midtre summane kan oppnåast på fleire måtar. b) Lite — det ligg innanfor den grove feilmarginen ±0,01\pm 0{,}01 som 10 000 forsøk gir. c) 40 000 kast.

📝Oppgave 4

Om uvissa i ei simulering.

a

Ei simulering med 2500 forsøk gir anslaget 0,384. Kor stor er den grove feilmarginen 1n\displaystyle \frac{1}{\sqrt{n}}? Svar med to desimalar.

b

Kor mange forsøk trengst for å halvere feilmarginen i a)?

c

Kor mange forsøk trengst for å gjere feilmarginen ti gonger mindre enn i a)?

d

Ein elev skriv «simuleringa gir 0,38400». Kva er gale med svaret?

e

Korleis bør svaret i d) i staden skrivast?

Løs oppgaven

Oppsummering

- Simulering utfører forsøket mange gonger digitalt og bruker den relative frekvensen som anslag. Grunngivinga er store tals lov.
- Framgangsmåten er fem steg: modell, eitt forsøk, test, gjenta og tel, del og tolk.
- Simuleringa måler modellen du gav henne. Er modellen gal, hjelper ikkje fleire forsøk.
- I rekneark: TILFELDIGMELLOM, HVIS og SUMMER, og F9 for ny køyring. I Python: ei løkke med ein teljar.
- Når du les program som andre har skrive: finn testlinja — ho seier kva hending som blir talt. Følg deretter to gjennomløp av løkka.
- Eit simuleringssvar er ei måling med uvisse. Firedobling av nn halverer uvissa, og svaret skal ikkje oppgivast med fleire desimalar enn det kan bere.
- Bruk simulering til å kontrollere ei utrekning du er usikker på — og til å svare når utrekninga er for vanskeleg.

📝Oppgave 5
Samleoppgåve (Del 1 — utan hjelpemiddel). Eit program simulerer fire kast med eit pengestykke og tel kor ofte alle fire viser krone. Du skal kontrollere programmet ved rekning før du stolar på det.
a

Kor mange utfall har utfallsrommet for fire kast?

b

Bestem sannsynet for at alle fire viser krone. Oppgi forkorta brøk.

c

Programmet køyrer 80 000 forsøk. Omtrent kor mange treff ventar du?

d

Ei køyring gir 5043 treff. Rekn ut anslaget med fire desimalar, og samanlikn med b).

e

Ei anna køyring gir 12 000 treff. Kva bør du mistenkje?

Løs oppgaven
📝Oppgave 6
Samleoppgåve (Del 2 — programmering). Ein kiosk sel 200 lodd. 8 av dei gir gevinst. Eit idrettslag kjøper 15 lodd.
a

Skriv linja som trekkjer dei 15 lodda idrettslaget kjøper, når lodda er nummererte 1 til 200 og gevinstlodda har nummera 1 til 8.

b

Skriv testlinja som avgjer om laget fekk minst éin gevinst.

c

Bestem sannsynet for at laget ikkje får nokon gevinst, ved rekning. Svar med tre desimalar.

d

Bestem sannsynet for minst éin gevinst. Svar med tre desimalar.

e

Laget vurderer å kjøpe 30 lodd i staden. Blir sannsynet for minst éin gevinst dobbelt så stort? Rekn ut og forklar.

Løs oppgaven
📝Oppgave 7
Drøftingsoppgåve. Eit forsikringsselskap simulerer utbetalingar etter storm. Dei legg inn at kvar einskild bygning blir skadd uavhengig av dei andre, med sannsyn 0,002. Programmet køyrer 10 millionar simulerte år og konkluderer: «Sannsynet for at vi må betale ut meir enn ein milliard kroner på eitt år, er mindre enn 1 av 100 000.»
a

Er føresetnaden om at bygningane blir skadde uavhengig av kvarandre, rimeleg ved storm? Grunngi.

b

Kva veg vil denne føresetnaden dra anslaget — for høgt eller for lågt?

c

Hjelper det å auke frå 10 millionar til 100 millionar simulerte år?

d

Kva kunne selskapet ha gjort for å betre modellen?

e

Formuler ein generell lærdom om simulering ut frå dette.

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.