Undervisningsopplegg – vinne i Lotto

Så lenge jeg kan huske har min far spilt Lotto, og men jeg kan fortsatt ikke huske at han har vunnet noen større premier. Jeg husker også at jeg i mattetimene regnet på sannsynligheten for å vinne, og tenkte på hvor mye det kunne koste for å få en garantert førstegevinst.

På Norsk Tipping sine sider står det at «Lotto er et lotterispill hvor det trekkes 7 hovedtall og 1 tilleggstall av totalt 34 tall. Får du 7 rette tall på én og samme rekke, vinner du førstepremiepotten i Lotto». Videre står det at vinnersjansen er 1:5,4 millioner per rekke. Altså må en fylle ut 5,4 millioner rekker, for å være garantert å vinne.

Men er det egentlig slik. Tilfeldighetene rår, og i teorien kan du, om du har vanvittig flaks, vinne allerede første gangen du spiller Lotto. La oss lage et dataprogram som simulerer trekninger, utfra en liste med våre sju «lykketall». Da vil vi kunne se hvor mange trekninger som trengs for å vinne.

Kompetansemål matematikk etter 8.trinn:
– lage og forklare regneuttrykk med tall, variabler og konstanter knyttet til praktiske situasjoner
– utforske, forklare og sammenligne funksjoner knyttet til praktiske situasjoner
– utforske hvordan algoritmer kan skapes, testes og forbedres ved hjelp av programmering

Kompetansemål matematikk etter 9.trinn:
– beregne og vurdere sannsynlighet i statistikk og spill
– simulere utfall i tilfeldige forsøk og beregne sannsynligheten for at noe skal inntreffe, ved å bruke programmering

Krav til programmet
Når programmet starter skal brukeren legge inn 7 ulike tall mellom 1 og 34. Programmet må kunne kontrollere tallene som brukeren skriver inn etter følgende regel: de må være tall, være mellom 1 og 34, og ikke allerede være valgt.

Deretter skal programmet trekke 7 tilfeldige tall mellom 1 og 34, og kontrollere mot tallene som brukeren sine «lykketall». Om tallene ikke trekkes ut, prøver programmet om igjen. Slik fortsetter til programmet klarer å trekke ut de 7 rette tallene. Da stopper programmet.

En ferdig versjon av programmet finnes på https://scratch.mit.edu/projects/644146508

Steg 1 – Pseudokode
La oss pseudokode løsningen før vi begynner å kode. Det kan være med på å finne en god struktur i programmet, finne ut variabler, løkker og vilkår.

Steg 2 – Starte programmet
Når programmet starter skal det opprette en tom liste, hvor de 7 tallene skal legges inn. Vi har også noen variabler vi må nullstille. Før vi begynner lager vi en liste som vi kaller mine_tall.

Vi informerer så brukeren hva som skal skje, før vi kjører en løkke som ber om «lykketallene»

Steg 2 – Be om et og et tall
Vi skal be om et og et tall, og lager en løkke som spør om disse tallene. Denne løkken skal kjøres minst 7 ganger. Grunnen til at den kanskje må kjøres flere ganger, er at noen av tallene kan bli underkjent av kontrollen.

Legg merke til variabelen tall_kontroll som jeg setter til 1. Om en av kontrollene feiler, vil denne bli satt til 0 og tallet vil ikke bli lagt til listen i neste steg. Da vil vi be om tallet på nytt.

Steg 3 – kontrollere «lykketallene»
I denne løkken, før vi kjører testen på tall_kontroll må vi foreta kontrollene. Vi legger kontrollene i en egen funksjon, som vi kaller sammen med tallet vi ønsker å kontrollere. Grunnen til at vi gjør dette er at vi ønsker å holde koden oversiktlig og ryddig.

Vi lager en ny funksjon under Mine klosser, som vi kaller sjekk_tall, og som har et parameter med seg inn. Da får vi en ny blokk som heter sjekk_tall, som kaller funksjonen sjekk_tall og som skal ligge i løkken vi laget i steg 2. Den må ligge før den skal legges inn i listen. I tillegg får vi en blokk som skal definere den nye funksjonen.

Den første kontrollen skal kontrollere at tallet er mellom 1 og 34. Om det ikke er det, setter vi variabelen tall_kontroll til 0, og prosessen med å spørre et nytt tall, vil kjøres om igjen.

Den andre er kontrollen, er om tallet allerede ligger i listen. Ligger tallet der, setter vi variabelen tall_kontroll til 0, og prosessen med å spørre et nytt tall, vil kjøres om igjen.

Steg 4 – teste at listen fylles med lykketallene
På tide å teste at del 1 av programmet fungerer. Start programmet ved å klikke på det grønne flagget:

  • Tømmes listen når programmet starter?
  • Informerer programmet om hva som skal skje?
  • Spør den etter tall 1-7?
  • Havner tall mellom 1 og 34 i listen?
  • Får du feilmelding når tallet er større enn 34 og mindre enn 1?
  • Får du feilmelding om listen allerede inneholder tallet du ønsker å legge inn?
  • Spør den etter tall på nytt om det kommer feil tall?

Steg 5 – foreta trekning
Da er det tid for å foreta en trekning. For å kunne foreta flere trekninger på samme listen med lykketall, så skal vi starte programmet når figuren klikkes.

Det første som må gjøres er å nullstille noen variabler som vi trenger for å holde kontroll på trekningen. Vi trenger en som teller opp antall trekninger, en som teller opp antall riktige tall, og tilslutt en som forteller om trekningen har resultert i 7 rette tall.

Deretter lager vi en løkke som skal gjentas helt til du har fått 7 rette tall i en trekning. Dette vises ved å sette variabelen vinner til 1.

I denne løkken kaller vi en funksjon vi kaller trekning og som foretar trekningen, og endrer variabelen som holder styr på antall trekninger.

Funksjonen trekning har ingen parameter med seg inn, og det første den gjør er å sette antall rette til null. Denne variabelen nullstilles for hver trekning.

I funksjonen trekning skal vi trekke sju tilfeldige tall mellom 1 og 34. Vi trekker et og et tall, men må også legge inn en kontroll på om en trekker ut samme tall to ganger. Derfor legger vi tallene vi trekker inn i en liste, som nullstilles for hver trekning.

Når vi har trukket ut syv ulike tall, er trekningen ferdig. Dette blir testen i løkken.

Denne koden kan sikkert gjøres på flere måter, men siden Scratch mangler en blokk som heter «ikke inneholder» ser koden her litt rar ut. Om tallet som trekkes finnes i listen over tall vi har trukket, så skjer overhodet ingenting. Om det ikke finnes skjer det langt mer. Tallet legges inn i listen over tall som er trukket. I samme løkken kontrollerer vi et og et trukket tall mot listen med lykketall. Finnes tallet i listen, har vi en rett, og registrerer dette. Om ikke, går vi bare videre og trekker et nytt tall.

Når alle 7 tallene er trukket, tar vi en rask sjekk for å se om vi har klart å få 7 rette i denne trekningen. Har vi 7 rette, endrer vi kontroll variabelen til 1 og trekningene er ferdig. Klarer vi ikke 7 rette, prøver programmet igjen.

Tilbake igjen, i selve hovedprogrammet, gir vi tilbakemelding til brukeren hvor mange trekninger som gikk med for å få 7 rette.

Steg 6 – test av trekningen
Da er det på tide å foreta en test av trekningen. Start programmet og legg inn de 7 lykketallene. Foreta deretter trekninger ved å starte del 2 av programmet. NB! Det kan ta litt tid å teste, og kanskje kan det være en ide å bare kjøre noe få trekninger i begynnelsen, og se at den trekker ut tilfeldige tall og teller opp antall rette.

Steg 8 – Spille systemer
I Lotto kan en spille systemer, der en har systemer som sørger for at en i teorien har 8, 9 eller flere lykketall. På denne måten øker antallet rekker en spiller har og samtidig øker vinnersjansen.

Utvid programmet til å ta imot flere lykketall (9 eller 10). Trekningens skal likevel stoppe når 7 rette tall er trukket ut. Får det konsekvenser for resultatene?

Utfordringer og videreutvikling av programmet
Dette programmet kan bygges ut på mange spennende måter. Her er tips:

  • Lag en liste som registrerer antall trekninger med disse tallene. Regn ut gjennomsnittlig antall treninger som trengs og oppdater dette tallet etter hver trekning.
  • Finn det laveste antall trekninger som har gitt 7 rette, og det høyeste antall trekninger.
  • Hvor mange kuponger må fylles ut? Hva er prisen?

Kommentarer er stengt.

Blogg på WordPress.com.

opp ↑

%d bloggere liker dette: