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.
- Regn ut hva resultatet «burde» blitt. 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 .
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?
- 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.
| 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 |
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
- Kastene er kron, mynt, kron, kron, altså 4 kast totalt
- tre av dem er kron
- antallKron økes 3 ganger
| Kast | Resultat |
|---|---|
| 1. | kron |
| 2. | mynt |
| 3. | kron |
| 4. | kron, antallKron=3 |
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
172 av 1 000 kast:
| Antall seksere | Kast | P |
|---|---|---|
| 172 | 1 000 | 0,17 |
L-33Hva kalles sannsynligheten du regner ut FRA en formel, i motsetning til den du får FRA en simulering?
Vis fasit
- Denne sannsynligheten regnes ut med en formel
- den er ikke basert på faktisk gjennomførte forsøk
- den kalles teoretisk sannsynlighet
| Type | Kilde |
|---|---|
| Fra formel | 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
- 53 av 100 kast ga kron
- empirisk sannsynlighet:
- teoretisk: 0,5
- differanse:
| Type | Verdi |
|---|---|
| Empirisk () | 0,53 |
| Teoretisk | 0,5 |
| Differanse | 0,03 |
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
- 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
| Antall forsøk | Pålitelighet |
|---|---|
| 5 | for få 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
- 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
| Del | Betydning |
|---|---|
| Løkke 1 000 ganger | trekk tilfeldig tall 1-6 |
| Tell tallet 1 | simulerer 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
- og , begge svært nære
- ja, begge er rimelige
| Simulering | Andel |
|---|---|
| 1 000 | 0,1665 |
| 1 000 | 0,1672 |
| Teoretisk () | 0,1667, begge 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
- 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
| Antall forsøk | Pålitelighet |
|---|---|
| 10 | lav |
| 10 000 | høy, 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
- 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
| Steg | Handling |
|---|---|
| Start | antallSyvere=0 |
| Gjenta 100 ganger | trekk to tall, sjekk sum=7, øk telleren |