Simulere tilfeldige forsøk med programmering
Noen sannsynligheter er kompliserte å regne ut nøyaktig for hånd. Da kan du bruke en algoritme til å SIMULERE mange tilfeldige forsøk (f.eks. tusen terningkast) og telle hvor ofte et utfall skjer – jo flere forsøk, jo nærmere kommer den EMPIRISKE sannsynligheten (fra simuleringen) den TEORETISKE sannsynligheten (regnet ut med formel).
Tips
- Jo flere forsøk simuleringen kjører, jo nærmere kommer resultatet den teoretiske sannsynligheten – dette kalles «de store talls lov».
- En simulering med FÅ forsøk (f.eks. 10) kan gi et resultat langt fra den teoretiske sannsynligheten, rent tilfeldig – ikke la et lite antall forsøk lure deg til å tro formelen er feil.
Eksempel: Spore en enkel simulering av terningkast
En algoritme kaster en terning 6 ganger og teller antall seksere. Pseudokoden er: «SETT antallSeksere = 0. FOR HVERT kast (6 ganger): trekk et tilfeldig tall fra 1 til 6. HVIS tallet er 6: øk antallSeksere med 1.» I én kjøring ble tallene 3, 6, 2, 6, 1, 4. Hvor mange seksere telte algoritmen?
| Kast | Tall | Er 6? | antallSeksere |
|---|---|---|---|
| 1 | 3 | Nei | 0 |
| 2 | 6 | Ja | 1 |
| 3 | 2 | Nei | 1 |
| 4 | 6 | Ja | 2 |
| 5 | 1 | Nei | 2 |
| 6 | 4 | Nei | 2 |
- Vi sporer algoritmen gjennom de seks kastene 3, 6, 2, 6, 1, 4
- kast 1 (3): ikke 6, antallSeksere fortsatt 0
- kast 2 (6): er 6, antallSeksere blir 1
- kast 3 (2): ikke 6, fortsatt 1
- kast 4 (6): er 6, antallSeksere blir 2
- kast 5 (1) og kast 6 (4): ikke 6, fortsatt 2
- svaret er antallSeksere = 2.
Alternativ forklaring/metode: Regn ut hva resultatet «burde» blitt
Alternativ metode – innenfor pensum, men ikke hovedmetoden her
Sammenligne empirisk med teoretisk sannsynlighet
I stedet for bare å telle utfallet, sammenlign det med den TEORETISKE sannsynligheten: med over 6 kast «forventer» vi i snitt 1 sekser. Å få 2 seksere i én kjøring er innenfor normal tilfeldig variasjon – det ville krevd mange flere kjøringer for å se om simuleringen faktisk nærmer seg .
| Type | Antall seksere |
|---|---|
| Forventet (teoretisk) | 1 |
| Faktisk (denne kjøringen) | 2, innenfor normal variasjon |
Oppgaver
Prøv minst én oppgave på hvert nivå.
Lett(3)
L-31En simulering kaster en mynt 4 ganger: kron, mynt, kron, kron. Bruk pseudokoden «SETT antallKron = 0. HVIS kastet er kron: øk antallKron med 1.» Hvor mange ganger blir antallKron øket?
Vis fasit
| Kast | Resultat |
|---|---|
| 1. | kron |
| 2. | mynt |
| 3. | kron |
| 4. | kron, antallKron=3 |
- Kastene er kron, mynt, kron, kron, altså 4 kast totalt
- tre av dem er kron
- antallKron økes 3 ganger
L-32En simulering av 1 000 terningkast fikk 6 på 172 av kastene. Hva er den empiriske sannsynligheten (som desimaltall, avrundet til to desimaler)?
Vis fasit
| Antall seksere | Kast | P |
|---|---|---|
| 172 | 1 000 | 0,17 |
172 av 1 000 kast:
L-33Hva kalles sannsynligheten du regner ut FRA en formel, i motsetning til den du får FRA en simulering?
Vis fasit
| Type | Kilde |
|---|---|
| Fra formel | teoretisk sannsynlighet |
- Denne sannsynligheten regnes ut med en formel
- den er ikke basert på faktisk gjennomførte forsøk
- den kalles teoretisk sannsynlighet
Middels(3)
M-31En algoritme simulerer 100 myntkast og teller 53 kron. Hvor langt er dette fra den teoretiske sannsynligheten (0,5)?
Vis fasit
| Type | Verdi |
|---|---|
| Empirisk () | 0,53 |
| Teoretisk | 0,5 |
| Differanse | 0,03 |
- 53 av 100 kast ga kron
- empirisk sannsynlighet:
- teoretisk: 0,5
- differanse:
M-32En elev kjører en simulering med bare 5 terningkast og får 0 seksere. Konkluderer med at «sannsynligheten for sekser er 0». Hva er feilen i resonnementet?
Vis fasit
| Antall forsøk | Pålitelighet |
|---|---|
| 5 | for få til å konkludere |
- Med så få forsøk (5) er det høyst sannsynlig å ikke få noen seksere selv om er riktig
- for få forsøk til å konkludere
M-33Skriv om følgende pseudokode-steg til vanlig norsk: «FOR HVERT kast (1 000 ganger): trekk et tilfeldig tall fra 1 til 6. HVIS tallet er 1: øk antallEttere med 1.»
Vis fasit
| Del | Betydning |
|---|---|
| Løkke 1 000 ganger | trekk tilfeldig tall 1-6 |
| Tell tallet 1 | simulerer og teller enere |
- Løkken gjentar 1 000 ganger, trekker et tilfeldig tall 1-6, og teller de gangene tallet blir 1
- simulerer 1 000 terningkast og teller enere
Vanskelig(3)
V-31To simuleringer av 10 000 terningkast fikk henholdsvis 1 665 og 1 672 seksere. Er begge resultatene rimelige sammenlignet med den teoretiske sannsynligheten ?
Vis fasit
| Simulering | Andel |
|---|---|
| 1 000 | 0,1665 |
| 1 000 | 0,1672 |
| Teoretisk () | 0,1667, begge rimelige |
- og , begge svært nære
- ja, begge er rimelige
V-32Hvorfor gir en simulering med 10 000 forsøk normalt et mer pålitelig anslag på sannsynligheten enn en simulering med 10 forsøk?
Vis fasit
| Antall forsøk | Pålitelighet |
|---|---|
| 10 | lav |
| 10 000 | høy, jf. de store talls lov |
- 10 000 forsøk er mye mer enn 10 forsøk, og jo flere forsøk, jo mindre påvirker tilfeldige svingninger andelen totalt
- flere forsøk gir mer pålitelig anslag, jf. de store talls lov
V-33Skriv pseudokode (i samme stil som i eksempelet) for å simulere 100 kast med to terninger og telle hvor mange ganger summen blir 7.
Vis fasit
| Steg | Handling |
|---|---|
| Start | antallSyvere=0 |
| Gjenta 100 ganger | trekk to tall, sjekk sum=7, øk telleren |
- Algoritmen må gjenta 100 ganger, trekke TO tilfeldige tall per runde, regne ut summen, og telle når summen er 7
- SETT antallSyvere=0, gjenta 100 ganger: trekk to tall, sjekk om summen er 7, øk telleren