Tilfeldige tall og simulering
Med biblioteket random kan programmet trekke tilfeldige tall. Linjen
random.randint(1, 6) gir et tilfeldig HELTALL fra 1 til 6, og her er
BEGGE endepunktene med, i motsetning til range. Med random.choice(liste)
trekker du et tilfeldig element fra en liste. Et program som bruker
tilfeldige tall gir ikke nødvendigvis samme svar hver gang det kjøres.
Det kan brukes til SIMULERING: vi lar datamaskinen kaste en terning mange ganger og teller hvor ofte vi får en sekser.
import random
antall = 0
for i in range(600):
kast = random.randint(1, 6)
if kast == 6:
antall = antall + 1
print(antall)
Programmet kaster terningen 600 ganger og teller seksere. Siden sannsynligheten for en sekser er , forventer vi omtrent seksere. Svaret blir som regel nær 100, men sjelden akkurat 100, og det varierer fra kjøring til kjøring.
Forventet antall
| Antall kast | Forventet antall seksere |
|---|---|
| 60 | 10 |
| 600 | 100 |
| 6 000 | 1 000 |
Tips
random.randint(1, 6)kan gi både 1 og 6. Det er annerledes ennrange(1, 6), som stopper før 6.- En simulering gir en TILNÆRMING til sannsynligheten. Jo flere kast du simulerer, jo nærmere kommer andelen seksere . Etter 60 kast kan andelen ligge langt unna, etter 6 000 kast ligger den som regel tett på.
- Forventet antall er ikke et garantert antall. Å kaste 600 ganger og få 96 eller 107 seksere er helt normalt.
Eksempel: Hvilke verdier kan komme?
To terningkast simuleres med random.randint(1, 6) + random.randint(1, 6). Hva er den minste og den største summen programmet kan gi?
- Hver terning kan gi fra 1 til 6, og begge endepunktene er med
- minste sum får vi når begge gir 1, og da er summen 1 + 1 = 2
- største sum får vi når begge gir 6, og da er summen 6 + 6 = 12. Summen er alltid et heltall fra 2 til 12.
| Terning 1 | Terning 2 | Sum |
|---|---|---|
| 1 | 1 | 2, minst |
| 6 | 6 | 12, størst |
Oppgaver
Prøv minst én oppgave på hvert nivå.
Lett(3)
L-21Hvilket bibliotek må du importere for å bruke random.randint?
Vis fasit
- Funksjonen heter
random.randint, og navnet før punktum er biblioteket random
L-22Hvilke verdier kan random.randint(1, 6) gi?
Vis fasit
randint(1, 6)tar med begge endepunktene- 1 til og med 6
L-23Gir et program med random.randint(1, 6) alltid samme verdi hver gang det kjøres?
Vis fasit
- Tilfeldige tall er nettopp tilfeldige
- nei, verdien varierer fra kjøring til kjøring
Middels(3)
M-21Hvor mange ulike verdier kan random.randint(0, 3) gi?
Vis fasit
- Begge endepunktene er med
- verdiene er 0, 1, 2 og 3
- 4
M-22Programmet fra teksten kaster en terning 600 ganger og teller seksere. Omtrent hva forventer du at antall blir?
Vis fasit
- Sannsynligheten for en sekser er
- 100
| Antall kast | Sannsynlighet | Forventet |
|---|---|---|
| 600 | 100 |
M-23Hvilke verdier kan random.choice(['rød', 'blå', 'grønn']) gi?
Vis fasit
choicetrekker ÉN verdi fra listen- «rød», «blå» eller «grønn»
Vanskelig(3)
V-21Et program kaster en mynt 10 ganger med random.randint(0, 1) og teller hvor mange ganger det blir 1. Hva er det minste og det største antallet programmet kan gi?
Vis fasit
- Ingen 1-ere gir 0
- bare 1-ere gir 10
- 0 og 10
V-22Hvorfor ligger andelen seksere som regel nærmere etter 6 000 kast enn etter 60 kast?
Vis fasit
- Hvert kast er tilfeldig, men over mange kast jevner tilfeldighetene seg ut
- andelen nærmer seg sannsynligheten
V-23Hva er den minste og den største summen programmet random.randint(1, 6) + random.randint(1, 6) kan gi?
Vis fasit
- Minst 1 + 1 = 2
- størst 6 + 6 = 12
- 2 og 12