Læringsmål:
- Lister
- Tilfeldige tall
- FOR-løkker
- While-løkker
- Betingelser
Pensum:
...
- 3.3 - Input and Output
- 3.7 - User-Defined Functions That Return a Single Value
- 4.1 - The if statement
- 4.2 - The if-else statement
- 4.3 - Nested if-else statements
- 5.1 - The for loop
- 5.3 - While loops
- 5.4 - Loops with Vectors and Matrices
Du skal i denne oppgaven lage en lottosimulator.
Reglene er som følger:
- Det trekkes ut 7 hovedttall hovedtall + 3 tilleggstall fra og med 1 til og med 34. Alle tallene som trekkes skal være unike.
- Premier deles ut basert på følgende tabell:
Premiegruppe | Premie (kr) |
---|---|
7 rette | 2 749 455 |
6 rette + 1 tilleggstall | 102 110 |
6 rette | 3 385 |
5 rette | 95 |
4 rette + 1 tilleggstall | 45 |
a)
...
Lag listen pool
...
som inneholder alle heltall fra og med 1 til og med 34.
b)
Lag listen myGuess
med 7 av sine egne lykketall fra pool
c)
Lag funksjonen drawNumbers(pool, n)
som trekker ut n
tall ut av listen pool
og legger de i en egen liste som returneres.
Hint: Iterer gjennom pool og bytt om plasseringen på tall ved posisjon i
og et annet tilfeldig tall i listen. Følgelig er listen tilfeldig og man kan trekke de første n
elementene på en enkel måte.
d)
...
b) Du har lest uttallige medieoppslag om folk som har spilt samme lottorekke i mange år, gjerne bestående av 1,2,3,4,5,6,7
eller lignende. Siden du går på NTNU, vet du at dette ikke er en rasjonell måte å spille lotto på. Du vil derfor lage en funksjon som returnerer en tilfeldig lottorekke. Lag funksjonen getTicket(pool, N)
som returnerer en liste med N
tilfeldige tall trukket fra pool
. Husk at tallene må være unike.
Code Block | ||||
---|---|---|---|---|
| ||||
>> getTicket(pool, 7)
ans =
28 23 11 33 2 15 13 |
c) Lag funksjonen compareLists(list1, list2)
som sammenligner to lister med tall. Antall like tall i listene skal returneres. Det trengs ikke å ta stilling til
...
hvorvidt et tall forekommer flere ganger.
...
Code Block | ||||
---|---|---|---|---|
| ||||
>> compareLists([1,2], [2,3,4])
ans =
1 |
d) Lag funksjonen prizeSize(correctNumbers, correctAdditionalNumbers)
som
e)
...
tar inn antall riktige tall
...
og
...
tilleggstall og returnerer størrelsen på premien som er vunnet.
...
Code Block | ||||
---|---|---|---|---|
| ||||
>> priseSize(0, 3)
ans =
0
>> priseSize(4, 1)
ans =
45 |
f)
e)
Funksjonene skal settes sammen slik at dette blir en fullverdig lottosimulator for en lottorekke. Tallene som skal trekkes ut, både hoved- og tilleggstallene, kan legges i samme liste
...
. Deretter skal du bruke funksjonene du har laget til å bestemme hvor mye premien blir. Husk at en lottokupong inneholder 10 lottorekker.
Hint: For at lottosimulatoren skal være spennende, kan du bruke funksjonen pause()
.
Code Block | ||||
---|---|---|---|---|
| ||||
>> lottoSimulator
Din kupong:
Rekke 1: 4 8 12 14 30 31 32
Rekke 2: 3 4 7 8 10 18 27
Rekke 3: 15 17 26 27 28 29 31
Rekke 4: 6 8 12 14 24 28 33
Rekke 5: 2 5 10 15 17 26 27
Rekke 6: 2 5 9 11 17 25 29
Rekke 7: 9 20 30 31 32 33 34
Rekke 8: 1 2 3 8 9 25 29
Rekke 9: 1 4 14 16 24 31 32
Rekke 10: 2 7 10 20 24 28 33
Trukne tall:
4 31 23 24 1 25 6
Tilleggstall:
14 19 12
Du har vunnet: 45 kroner |
f) Du ønsker å finne ut hvorvidt det er lønnsomt å investere studielånet ditt på å spille Lotto. En lottorekke koster 5,-. Finn ut hvor mye du sitter igjen med dersom du bruker neste utbetaling (7400,-) på lotto.
...
g)
Finn ut hvor mye man har vunnet etter å ha tippet 2700 ganger. Anta at premiepotten er det samme hver uke og at det tippes fem rekker per uke. En lottorekke koster 5 kroner.