Sannsynlighet i Python
Vi har tidligere sett på tilfeldige hendelser i Python, og blant annet brukt det til å utforske store talls lov. Nå skal vi se mer på det, og også utforske utvalg uten tilbakelegging.
For å gjøre noe tilfeldig i Python, trenger vi å importere biblioteket Random. På denne siden skal vi bare bruke funksjonene randint og choice, men her er en liten oversikt over de fire vanligste funksjonene fra biblioteket:
randint(x, y) Trekker et tilfeldig heltall fra og med x til og med y
choice(liste) Trekker et tilfeldig element fra ei liste, her fra lista liste
random() Trekker et tilfeldig desimaltall mellom 0 og 1 (skal ikke være noe i parentesen)
uniform(x, y) Trekker et tilfeldig desimaltall fra og med x til og med y
Du kan se en oversikt over alle funksjonene i Random-biblioteket her
Utvalg uten tilbakelegging
På forrige side så vi på choice-funksjonen, som brukes til å trekke tilfeldig fra ei liste. Denne brukte vi til å simulere utvalg med tilbakelegging. Hvis vi vil simulere utvalg uten tilbakelegging, må vi også kunne fjerne elementer fra ei liste.
Til det kan vi bruke funksjonen .remove(). Vi skriver
<listenavn>.remove(<verdi>)
der <verdi> er verdien vi ønsker å fjerne.
Her er et eksempel der vi lager tilfeldige makkerpar fra ei klasseliste:
Oppgave: Sokkeskuffen
Arne gidder ikke sortere sokkene sine, og har alle liggende løst i én skuff. Heldigvis har han bare to typer sokker, blå og gule, så det er en grei sannsynlighet for å trekke to like sokker. Arne har 20 blå og 13 gule sokker
Programmet til høyre simulerer Arnes daglige sokketrekk, og forteller om han fikk like sokker denne dagen eller ikke.
Utvid programmet til å finne en tilnærming til sannsynligheten for at Arne trekker to sokker med samme farge.
Finn tilnærmet sannsynligheten for at Arne får to blå sokker
Du kan skrive koden din under.
Monty Hall-problemet
Monty Hall-problemet handler om sannsynlighet og hvordan det ikke alltid stemmer overens med hva som føles logisk. Det matematiske problemet er inspirert av det amerikanske TV-programmet "Let's make a deal", og er oppkalt etter programlederen Monty Hall.
Problemet er som følger:
En deltaker valget mellom tre dører. Bak ei av dørene er det en bil, mens det bak de to andre er geiter. Deltakeren velger først ei dør. Programlederen, som vet hvilken dør bilen befinner seg bak, åpner så ei av de andre dørene, som han vet det står ei geit bak. Deltakeren får så valget om hun ønsker å bytte dør eller beholde den hun allerede har valgt.
Spørsmålet er: Lønner det seg å bytte?
Hentet fra Wikipedia
Dette kan vi ganske enkelt simulere i Python. Her er først et eksempel der vi lar den som kjører programmet velge å bytte eller ikke bytte dør: