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.

Du kan skrive koden din under.

Startkode til deloppgave 1

Løsningsforslag til deloppgave 1

Startkode til deloppgave 2

Løsningsforslag til deloppgave 2

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:

Nå skal vi prøve å bygge opp et program der datamaskinen velger å bytte eller ikke bytte hver gang.

Ferdig program