Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Om Øvelse 7 Stoff relatert til øvelse 7 Generering av tilfeldige tall Bruk ting vi har lært før.

Liknende presentasjoner


Presentasjon om: "Om Øvelse 7 Stoff relatert til øvelse 7 Generering av tilfeldige tall Bruk ting vi har lært før."— Utskrift av presentasjonen:

1 Om Øvelse 7 Stoff relatert til øvelse 7 Generering av tilfeldige tall Bruk ting vi har lært før

2 Den virkelige verden og dataprogrammer I den virkelige verden er det ofte slik at vi ikke kan vite hva som skal skje, men vi vet at det er et sett med muligheter og at en av dem vil skje. Eksempler: –Kasting av terning: Etter kast vet vi at at den vil vise et tall 1..6 og at hvert tall er like sannsynlig –I trafikken vet vi at det vil skje mange ulykker. Dette vet vi av erfaring og vi kan finne hvor sannsynlig det er at det vil skje en ulykke i fremtiden

3 Tilfeldige tall – The Random Class (side 485) Det er ofte nyttig å lage dataprogrammer som simulerer den virkelige verden For å innføre elementer med usikkerhet benyttes tilfeldige tall. Dette er så mye brukat at alle programmeringsspråk har laget ferdig kode som gir oss tilfeldige tall. I VB er det Random-klassen (Random-klassen kan også kalles en Random-kontroll om du vil, men den har ikke noe som i vises et skjermvindu slik som f.eks. en TextBox-kontroll.)

4 Eksempel Deklarerer et nytt objekt av type Random Dim lagTilfeldigTall As New Random Bruker det nye objektet: tall = lagTilfeldigTall.Next() Får et positivt tall mellom 0 og 4 294 967 295 (Fordi VB bruker 32 bits tall som gir maks 2**32 = 4 294 967 296 verdier)

5 ... eksempel Private Sub btnBeregn_Click( ) Handles btnBeregn.Click Dim lagTilfeldigTall As New Random Dim tall As Integer tall = lagTilfeldigTall.Next() lstVis.Items.Add("Tilfeldig tall: " & tall) End Sub

6 ... eksempel Lag et tilfeldig tall mellom m og n: tall = lagTilfeldigTall.Next(m, n) MERK: tall blir et tall fra m og opp til n, men ikke med n Eksempel: Lag et tilfeldig tall mellom 1 og 10: tall = lagTilfeldigTall.Next(1, 11)

7 ... eksempel Lag et tilfeldig tall mellom 0 og 9: tall = lagTilfeldigTall.Next(1, 10) Private Sub btnBeregn_Click( ) Handles btnBeregn.Click Dim lagTilfeldigTall As New Random Dim tall As Integer tall = lagTilfeldigTall.Next(1, 10) lstVis.Items.Add("Tilfeldig tall: " & tall) End Sub

8 ... eksempel Lag en frekvenstabell for 100 tilfeldig tall hvor hvert tall er mellom 0 og 9: Dim frekvenstabell(9) As Integer frekvenstabell(0) inneholder antall 0'ere frekvenstabell(1) inneholder antall 1'ere osv frekvenstabell(9) inneholder antall 9'ere

9 ... eksempel Kode for å lage 100 tilfeldig tall mellom 0 og 9 og telle opp antall av hvert tall. Resultatet av tellingene legges i en frekvenstabell. Private Sub btnBeregn_Click() Handles btnBeregn.Click Dim lagTilfeldigTall As New Random Dim tall As Integer Dim frekvenstabell(9) As Integer For i As Integer = 1 To 100 tall = lagTilfeldigTall.Next(0, 10) frekvenstabell(tall) += 1 Next For i As Integer = 0 To 9 lstVis.Items.Add(i & ": " & frekvenstabell(i)) Next End Sub

10 Oppgave Modifiser koden slik at den lager 200 tilfeldig tall mellom 1 og 10 og ellers som før: Telle opp antall av hvert tall og legg resultatet av tellingene i en frekvenstabell. Private Sub btnBeregn_Click() Handles btnBeregn.Click Dim lagTilfeldigTall As New Random Dim tall As Integer Dim frekvenstabell(9) As Integer For i As Integer = 1 To 100 tall = lagTilfeldigTall.Next(0, 10) frekvenstabell(tall) += 1 Next For i As Integer = 0 To 9 lstVis.Items.Add(i & ": " & frekvenstabell(i)) Next End Sub

11 Løsning Koden som lager 100 tilfeldig tall mellom 1 og 10 og ellers som før: Telle opp antall av hvert tall og legg resultatet av tellingene i en frekvenstabell. Private Sub btnBeregn_Click() Handles btnBeregn.Click Dim lagTilfeldigTall As New Random Dim tall As Integer Dim frekvenstabell(9) As Integer For i As Integer = 1 To 200 tall = lagTilfeldigTall.Next(1, 11) frekvenstabell(tall-1) += 1 Next For i As Integer = 0 To 9 lstVis.Items.Add(i+1 & ": " & frekvenstabell(i)) Next End Sub

12 ... repeter noe fra slides fra forrige gang

13 Frekvenstabell Basert på tellinger av antall biler i ulike tellestasjoner laget i tabellMedTellinger(52 Lag en frekvenstabell som viser hvor mange tellinger det er i intervallene: –Mindre enn 20 tellinger –Mellom 20 og 40 tellinger –Mellom 40 og 65 tellinger –Mellom 60 og 80 tellinger –Over 80 tellinger

14 Prinsipp for kode 'Det er 5 intervaller Dim FrekvensTabell(4) As Integer 'plass til frekvens for hvert intervall ' Kode inni en løkke som går gjennom de 52 elementene i tabellen: If (tabellMedTellinger(i) < 20) Then FrekvensTabell(0) = FrekvensTabell(0) + 1 ElseIf (tabellMedTellinger(i) >= 20) or (tabellMedTellinger(i) < 40) Then FrekvensTabell(1) = FrekvensTabell(1) + 1 ’osv for alle intervallene End If

15 Fil: stasjon-og-antallBiler.txt Kleive 13 Nordbyen 45 Bjørset 12 Kvam 34 Fuglset 89 Sentrum 96

16 Eksempel: stasjonsnavn og tellinger 5 tellestasjoner teller antall biler som passerer på en time På filen stasjon-og-antallBiler.txt er det lagret stasjonsnavn og tellinger for hver stasjon Du skal: –beregne gjennomsnittlig antall biler for alle stasjonene –finne minste antall tellinger på en stasjon hvilken stasjon det er. –finne største antall tellinger på en stasjon hvilken stasjon det er. –Lage en frekvenstabell som viser hvor mange...

17 Dim sr As IO.StreamReader sr = IO.File.OpenText(“stasjon-og-antallBiler.txt”) ' MERK: To lesinger for å lese rett tall Do While (sr.peek() <> -1) stasjon = sr.ReadLine antallBilerPrStasjon = sr.ReadLine sum = sum + antallBilerPrStasjon antallStasjoner = antallStasjoner + 1 Loop gjennomsnitt = sum / antallStasjoner

18 13 45 120 105 89 56 45 67 45 96 34 12 34 45 23 67 45 34 74 89 134 98 23 12 6 32 34 2 12 45 34 23 43 34 23 27 67 56 28 17 12 56 8 9 3 6 3 5 38 1 2 antallBiler.txt

19 1 2 3 5 6 8 9 12 13 17 23 27 28 32 34 38 43 45 56 67 74 89 96 98 105 120 134 antallBiler-sortert.txt


Laste ned ppt "Om Øvelse 7 Stoff relatert til øvelse 7 Generering av tilfeldige tall Bruk ting vi har lært før."

Liknende presentasjoner


Annonser fra Google