460 likes | 787 Views
Simulation von Würfeln, Münzen,…. Referat am 18.12.2006 von Nadja Ullmann. Gliederung. Simulationen Stabilisierung der relativen Häufigkeit Aufgaben Zusammenfassung. Mit einem Würfel: Würfeln: > w<-floor(runif(10,1,7)) > w [1] 6 6 2 4 3 6 3 1 5 1 Tabelle: > t<-table(w) > t w
E N D
Simulation von Würfeln, Münzen,… Referat am 18.12.2006 von Nadja Ullmann
Gliederung • Simulationen • Stabilisierung der relativen Häufigkeit • Aufgaben • Zusammenfassung
Mit einem Würfel: Würfeln: > w<-floor(runif(10,1,7)) > w [1] 6 6 2 4 3 6 3 1 5 1 Tabelle: > t<-table(w) > t w 1 2 3 4 5 6 2 1 2 1 1 3 Mit zwei Würfeln: > wu<-floor(runif(10,1,7)) > wu2<-floor(runif(10,1,7)) > zu<-cbind(wu,wu2) > zu wu wu2 [1,] 5 1 [2,] 6 3 [3,] 6 6 [4,] 1 1 [5,] 4 3 [6,] 3 4 [7,] 4 6 [8,] 3 1 [9,] 3 5 [10,] 1 4 Würfel
Münzen Werfen einer Münze: > m<-floor(runif(10,1,3)) > m [1] 1 1 2 2 2 2 1 1 2 2 Tabelle: > mu<-table(m) > mu m 1 2 4 6
Urnen Mit Zurücklegen: 1=rote Kugel 2=blaue Kugel 3=gelbe Kugel Anzahl der Kugeln in der Urne: k<-c(1,1,2,2,2,3) Zuordnung: k<-c(1,2,3,4,5,6) 10-maliges Ziehen aus der Urne: > l<-floor(runif(10,1,7)) > l [1] 6 3 1 4 4 4 2 4 26
Rücksubstitution: > zo<-l > zo[l==1]<-1 > zo[l==2]<-1 > zo[l==3]<-2 > zo[l==4]<-2 > zo[l==5]<-2 > zo[l==6]<-3 Ergebnis: > zo [1] 3 2 1 2 2 2 1 2 1 3
Ohne Zurücklegen: e<-c(1,1,1,1,2,2,2,3) 8-maliges Ziehen aus der Urne: > s<-sample(8) > s [1] 1 4 3 6 5 8 7 2 Ergebnis: > zu<-e[s] > zu [1] 1 1 1 2 2 3 2 1
Lotto > x<-c(1:49) Zufälliges Erzeugen von sechs Zahlen von 1 bis 49: > s<-sample(x,6) > s [1] 37 4 12 5 21 30
Roulette Eine einzelne Zahl: > r<-floor(runif(1,0,37)) > r [1] 2 Eine Farbe: 0=0 1=rot 2=schwarz d<-c(0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2, 2,2,2,2,2,2) > z<-floor(runif(1,0,37)) > z [1] 7 (=rot)
Kritik • Sehr umständliche Befehle • Vor allem bei Simulation von zwei Würfeln, Münzen,… sehr aufwändig • Urnen sind sehr schwierig zu simulieren • Lotto einfach • Beim Roulette kann man einzelne Zahlen leicht erzeugen, Farben komplizierter
Würfel mit anderer Seitenanzahl Tetraeder: > t<-floor(runif(20,1,5)) > t [1] 4 2 4 2 3 3 1 2 1 1 1 1 2 3 1 2 2 12 2 Ikosaeder: (20 Dreiecksflächen) > j<-floor(runif(30,0,20)) > j [1] 19 6 18 16 3 13 13 4 5 18 15 2 12 0 1 10 [16] 13 3 13 14 7 19 1 18 18 19 15 14 15 16
Gleichzeitiges Werfen von Würfel und Münze Werfen der Münze: > m<-floor(runif(20,1,3)) > m [1] 2 1 1 2 2 2 1 2 1 2 2 2 2 2 2 2 2 2 1 2 Werfen des Würfels: > w<-floor(runif(20,1,7)) > w [1] 6 2 2 6 3 1 6 1 3 3 4 3 2 4 5 5 5 6 6 4
Zusammenfügen: > r<-rbind(m,w) > r [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] m 2 1 1 2 2 2 1 2 1 2 2 2 2 2 w 6 2 2 6 3 1 6 1 3 3 4 3 2 4 [,15] [,16] [,17] [,18] [,19] [,20] m 2 2 2 2 1 2 w 5 5 5 6 6 4 Tabelle: > t<-table(m,w) > t w m 1 2 3 4 5 6 1 0 2 1 0 0 2 2 2 1 3 3 3 3
Stabilisierung der relativen Häufigkeit Würfeln: > c<-floor(runif(100,1,7)) c [1] 6 5 5 3 6 6 2 1 4 3 2 5 2 1 2 4 1 2 2 1 3 2 2 6 5 3 6 6 5 5 3 6 2 6 6 5 1 [38] 2 2 5 4 3 1 1 6 4 1 6 1 6 5 4 2 4 5 6 1 1 3 3 6 1 1 3 4 4 2 1 1 2 2 6 1 3 [75] 3 2 3 4 4 6 6 1 6 6 3 4 4 6 3 4 1 3 4 5 5 2 3 5 4 5 Absolute Häufigkeiten: Relative Häufigkeiten > t<-table(c) > k<-t/sum(t) > t > k c c 1 2 3 4 5 6 1 2 3 4 5 6 18 17 16 15 14 20 0.18 0.17 0.16 0.15 0.14 0.20
500 Würfe: d<-table(floor(runif(500,1,7))) > d 1 2 3 4 5 6 72 88 98 79 69 94 > l<-c/sum(c) > l 1 2 3 4 5 6 0.144 0.176 0.196 0.158 0.138 0.188 5000 Würfe: > n<-f/sum(f) > n 1 2 3 4 5 6 0.1606 0.1650 0.1724 0.1680 0.1662 0.1678
100000 Würfe: > p<-h/sum(h) > p 1 2 3 4 5 6 0.16505 0.16543 0.16639 0.16792 0.16721 0.16800 1000000 Würfe: > q<-i/sum(i) > q 1 2 3 4 5 6 0.166552 0.166689 0.166694 0.166377 0.167116 0.166572
> c<-table(floor(runif(100,1,7))) > d<-table(floor(runif(500,1,7))) > e<-table(floor(runif(1000,1,7))) > f<-table(floor(runif(5000,1,7))) > g<-table(floor(runif(10000,1,7))) > h<-table(floor(runif(100000,1,7))) > i<-table(floor(runif(1000000,1,7))) > k<-c/sum(c) > l<-d/sum(d) > m<-e/sum(e) > n<-f/sum(f) > o<-g/sum(g) > p<-h/sum(h) > q<-i/sum(i) > zu[1]<-k[6] > zu[2]<-l[6] > zu[3]<-m[6] > zu[4]<-n[6] > zu[5]<-o[6] > zu[6]<-p[6] > zu[7]<-q[6] Diagramm zeichnen
Diagramme > plot(zu)
Kritik • Zeigt anschaulich die Annäherung an die relative Häufigkeit 1/6 • Im ersten Diagramm sieht man die Annäherung sehr gut, aber die Skalierung der x-Achse ist falsch • Im zweiten Diagramm stimmt die Skalierung der x-Achse, aber man erkennt nicht mehr viel
Das d´Alembertsche Münzproblem Zwei nicht unterscheidbare Münzen werden gleichzeitig geworfen. Wie groß ist die Wahrscheinlichkeit, dass mindestens einmal Kopf erscheint? Sind die Ereignisse (K,K), (Z,Z), (K,Z) gleichberechtigt oder nicht?
Unterstützung durch R? Werfen von zwei Münzen: > m<-floor(runif(20,1,3)) > o<-floor(runif(20,1,3)) Zusammenfügen: > rbind(m,o) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] m 2 1 1 2 2 2 1 2 1 2 2 2 2 2 o 2 1 1 2 1 1 2 1 1 1 2 1 1 2 [,15] [,16] [,17] [,18] [,19] [,20] m 2 2 2 2 1 2 o 2 2 2 2 2 2
Bilden der Summe: > zu<-m+o Tabelle: > ta<-table(zu) > ta zu 2 3 4 6 8 6 Zuordnung der Merkmale: > wk<-zu > wk[zu==2]<-"KK" > wk[zu==3]<-"ZK" > wk[zu==4]<-"ZZ" Tabelle mit Merkmalen: > table(wk) wk KK ZK ZZ 6 8 6 Aufgespaltene Tabelle: > t<-table(m,o) > t o m 1 2 1 6 6 2 2 6
Graphische Darstellung > barplot(ta)
Zweifacher Würfelwurf: > n<-floor(runif(100,1,3)) > p<-floor(runif(100,1,3)) Summe bilden: > zus<-n+p Tabelle: > tab<-table(zus) > tab zus 2 3 4 26 50 24 Tabelle mit Merkmalen: > wz<-zus > wz[zus==2]<-"KK" > wz[zus==3]<-"KZ" > wz[zus==4]<-"ZZ" > table(wz) wz KK KZ ZZ 26 50 24 Aufgespaltene Tabelle: > ta<-table(n,p) > ta p n 1 2 1 26 18 2 32 24 100 Münzwürfe
Graphische Darstellung > barplot(tab)
Kritik • Unterstützung durch R sinnvoll • Simulation auch bei größerer Zahlenmenge möglich • Nur sehr schwer möglich, zwei nicht unterscheidbare Münzen zu werfen, wie hier eigentlich nötig
Würfel-Paradoxon Wenn man zwei nicht unterscheidbare Würfel wirft, sind sowohl die 9 als auch die 10 auf zwei verschiedenen Wegen erhältlich. Wenn man drei nicht unterscheidbare Würfel wirft, können sich die 9 und die 10 auf jeweils sechs verschiedenen Arten ergeben. Wieso erhält man bei zwei Würfeln häufiger 9 als 10, bei drei Würfeln 10 öfter als 9?
Zweifacher Würfelwurf: > w<-floor(runif(100,1,7)) > v<-floor(runif(100,1,7)) Bilden der Augensumme: > zu<-w+v Tabelle: > ta<-table(zu) > ta zu 2 3 4 5 6 7 8 9 10 11 12 2 10 5 16 10 15 10 166 7 3 Aufgespaltene Tabelle: > t<-table(w,v) > t v w 1 2 3 4 5 6 1 2 3 2 5 1 4 2 7 1 7 2 0 0 3 2 1 1 3 3 5 4 3 4 4 4 6 1 5 2 1 1 42 3 6 3 2 13 4 3 Unterstützung durch R?
Dreifacher Würfelwurf: > a<-floor(runif(100,1,7)) > b<-floor(runif(100,1,7)) > c<-floor(runif(100,1,7)) Bilden der Augensumme: > zus<-a+b+c Tabelle: > tabl<-table(zus) > tabl zus 5 6 7 8 9 10 11 12 13 14 15 16 17 3 3 11 9 912 11 17 8 8 6 2 1
, , c = 3 b a 1 2 3 4 5 6 1 0 0 1 2 00 2 0 0 0 00 1 3 2 0 00 0 0 4 0 00 1 0 0 5 20 0 1 1 1 6 0 1 0 0 1 1 , , c = 4 b a 1 2 3 4 5 6 1 0 0 2 10 2 2 0 0 01 0 1 3 1 00 0 0 1 4 1 2 0 1 0 0 5 0 0 0 0 0 0 6 0 0 1 0 0 0 , , c = 5 b a 1 2 3 4 5 6 1 1 0 00 0 0 2 1 00 0 1 0 3 01 0 0 0 0 4 1 1 1 1 1 0 5 1 2 0 0 1 0 6 1 1 1 1 1 0 , , c = 6 b a 1 2 3 4 5 6 1 0 0 2 1 0 0 2 00 0 1 0 0 3 0 0 0 0 1 1 4 2 2 0 1 0 0 5 0 0 1 0 1 1 6 1 0 2 0 0 0 > tab<-table(a,b,c) > tab , , c = 1 b a 1 2 3 4 5 6 1 0 0 0 1 2 0 2 0 1 0 2 0 0 3 1 0 1 0 00 4 1 0 0 00 1 5 1 1 1 2 0 2 6 0 10 0 1 0 , , c = 2 b a 1 2 3 4 5 6 1 0 1 1 1 0 1 2 0 0 0 0 01 3 0 0 1 11 0 4 0 0 00 0 1 5 1 11 0 0 2 6 00 0 2 0 1
Graphische Darstellung Mit zwei Würfeln: > plot(ta)
Kritik • Kann zeigen, dass bei zweimaligem Würfeln die 9, bei dreimaligem Würfeln die 10 öfter vorkommt • Die graphische Darstellung verdeutlicht dies noch • Die aufgespaltenen Tabellen sind besonders bei dreimaligem Würfelwurf sehr unübersichtlich
Augensummen bei zwei Würfeln 100 mal würfeln: > d<-floor(runif(100,1,7)) > e<-floor(runif(100,1,7)) Augensumme: > z<-d+e Tabelle: > t<-table(z) > t z 2 3 4 5 6 7 8 9 10 11 12 3 3 11 10 13 18 12 16 6 4 4
Diagramm > plot(t)
1000000 mal würfeln: > f<-floor(runif(1000000,1,7)) > g<-floor(runif(1000000,1,7)) Augensumme: > zu<-f+g Tabelle: > ta<-table(zu) > ta zu 2 3 4 5 6 7 8 28078 55718 83552 110740 139410 166052 138318 9 10 11 12 111122 83539 55718 27753
Angaben in Prozent: > pr<-100*ta/sum(ta) > pr zu 2 3 4 5 6 7 2.8078 5.5718 8.3552 11.0740 13.9410 16.6052 8 9 10 11 12 13.8318 11.1122 8.3539 5.5718 2.7753 Gerundet: > ro<-round(pr,2) > ro zu 2 3 4 5 6 7 2.81 5.57 8.36 11.07 13.94 16.61 8 9 10 11 12 13.83 11.11 8.35 5.57 2.78
> rb<-rbind(ta,ro) > rb 2 3 4 5 6 7 ta 28078.00 55718.00 83552.00 110740.00 139410.00 166052.00 ro 2.81 5.57 8.36 11.07 13.94 16.61 8 9 10 11 12 ta 138318.00 111122.00 83539.00 55718.00 27753.00 ro 13.83 11.11 8.35 5.57 2.78 > t(rb) ta ro 2 28078 2.81 3 55718 5.57 4 83552 8.36 5 110740 11.07 6 139410 13.94 7 166052 16.61 8 138318 13.83 9 111122 11.11 10 83539 8.35 11 55718 5.57 12 27753 2.78
Diagramm > plot(ta)
Kritik • Zeigt sehr anschaulich die Annäherung an die verschiedenen Wahrscheinlichkeiten • Besonders das Diagramm verdeutlicht dies
Würfelspiel Man hat einen Laplace-Würfel, dessen Flächen die Ziffern 1,1,1,1,2,2 tragen. Mit diesem Würfel wird dreimal gewürfelt. Erscheint dabei die Eins öfter als die Zwei, dann gewinnt A, sonst gewinnt B. Wenn A gewinnt, bekommt er eine Geldeinheit. Gewinnt B, so erhält er zwei Geldeinheiten. Kann B mit dieser Vereinbarung zufrieden sein?
Unterstützung durch R? Ziffern der Seiten des Würfels: w<-c(1,1,1,1,2,2) Zuordnung: w<-c(1,2,3,4,5,6) > ww<-floor(runif(100,1,7)) > wx<-floor(runif(100,1,7)) > wy<-floor(runif(100,1,7)) Zusammenfügen: > r<-rbind(ww,wx,wy) > r [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] ww 3 3 2 4 6 1 6 6 4 1 6 2 4 6 wx 5 2 1 4 5 2 2 6 1 4 4 4 3 2 wy 1 2 2 6 1 3 4 1 2 2 6 6 2 1
Rücksubstitution: > tt<-r > tt[r<5]<-1 > tt[r>4]<-2 > tt [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] ww 1 1 1 1 2 1 2 2 1 1 2 1 1 2 wx 2 1 1 1 2 1 1 2 1 1 1 1 1 1 wy 1 1 1 2 1 1 1 1 1 1 2 2 1 1 Zählen der Würfe mit mindestens zweimal Zahl: > Ag<-apply(tt,2,sum) > T<-sum(Ag>4) > T [1] 17
Kritik • Unterstützt die Aufgabe nicht sehr • Man kann die Lösung nur bestätigen
Fazit • Für Schule nicht sehr sinnvoll, da die Befehle sehr umständlich sind und es keine expliziten Befehle für Simulationen gibt • Nur wenige Aufgaben, die für die Schule relevant sind, können durch R unterstützt werden • Für Stabilisierung der relativen Häufigkeit ist R nützlich, da man eine hohe Anzahl von Versuchen simulieren kann • Für Schüler selbst sind die Befehle zu kompliziert, Lehrer kann R zur Veranschaulichung im Unterricht verwenden