Zufallszahlen
Inhaltsverzeichnis |
Zufallszahlen und Würfelspiele
In den nächsten (letzten) Übungen mit dem PWiki werden wir noch ein paar "Spiele" mit Zufallszahlen erstellen. Anschließend werden wir mit einer Anwendersoftware (Fischer-Technik) Modelle bauen und steuern!
Doch zunächst:
Erzeugen von Zufallszahlen
<eval id="4cec1965a9ae3"> begin writeln(inttostr(zufall(100))); end.</eval>
Würfeln
Nun sollen nur Ergebnisse zufällig erzeugt werden, wie sie an einem idealen Würfel eintreten können.
Ergänze die Boxen analog dem obigen Beispiel und teste das Ergebnis.
<eval id="4cec1965a9bf2"> begin // dein Text end.</eval>
Simuliere nun ein Würfelspiel mit einem idealen Würfel.
Für eine Anzahl n von Würfen soll die Anzahl aller geworfenen Augenzahlen ausgegeben werden.
Hinweis: Es soll also für jede mögliche Augenzahl eine Variable vereinbart werden, eine beliebige Anzahl von (simulierten) Versuchen durchgeführt werden und die Anzahl der gewürfelten Einsen, Zweien, ..., Sechsen ausgegeben werden.
Stelle den notwendigen Algorithmus in einem Struktogramm dar.
Benutze dazu das Tool structorizer.
- Erstelle mit dem Programm das Struktogramm
- Speichere das Struktogramm als Bild (Format .jpg)
- füge dein Bild im PWiki ein
| Struktugramm.jpg | Nmalwürfeln.jpg | |
| Lucie | Martin | Jennifer |
| Wurf.jpg | Würfel.jpg | Wuerfelspiel.jpg |
| Till | Florian | Sebastian |
| Wuerfeln.jpg | Wuerfel.jpg | Structoricer.jpg |
| Ivan | Ronny | Marko |
| Zufall-Würfeln.jpg | Würfeln_matschi.jpg | Würfel2.jpg |
| Claudia | Maximilian | Lucas |
<eval id="4cec1965a9d02"></eval>
Wir stellen fest, dass eine function nur einen Wert (ein Resultat) zurückliefern kann.
Daher brauchen wir eine weitere Möglichkeit, die mehrere Ergebnisse liefert.
Dies geschieht unter Verwendung einer procedure, wobei die Rückgabewerte (Ergebnisvariablen) mit var angefügt werden (vergleiche Box).
<eval id="4d243865b40ec"></eval>
Formuliere anhand der Simulation eine Aussage über die Wahrscheinlichkeit der einzelnen Ergebnisse beim Würfeln.
zum Weiterarbeiten: Zeige durch eine analoge Simulation, dass die Zufallsgröße "Augensumme beim Würfeln mit zwei idealen Würfeln" nicht gleichverteilt ist.
Zufallszahlen
Erzeugen von Zufallszahlen
zunächst als function, die aufgerufen wird:
<eval id="4be10a1ebb218"> begin writeln(inttostr(zufall(100))); end.</eval>
andere, kürzere Variante:
<eval id="4be1207f5f5c1"> begin writeln(inttostr(random(100))); end. </eval>
Ist diese Variante für Programme praktikabel?
Würfeln
Simulieren Sie ein Würfelspiel mit einem idealen Würfel. Für eine Anzahl n von Würfen soll die Anzahl der geworfenen Augenzahlen ausgegeben werden.
<eval id="4bf2b9d356f46"></eval>
Formulieren Sie anhand der Simulation eine Aussage über große Zahlen und die Wahrscheinlichkeit. ("Gesetz der großen Zahlen")
zum Weiterarbeiten: Zeigen Sie durch eine analoge Simulation, dass die Zufallsgröße "Augensumme beim Würfeln mit zwei idealen Würfeln" nicht gleichverteilt ist.
procedure wuerfelsumme(n:integer;var z,d,v,f,s,si,a,ne,ze,e,zw:integer); var i,zz1,zz2,sum:integer; begin z:=0;d:=0;v:=0;f:=0;s:=0;si:=0;a:=0;ne:=0;ze:=0;e:=0;zw:=0; for i:=1 to n do begin zz1:=random(6)+1; zz2:=random(6)+1; sum:=zz1+zz2; if sum=2 then z:=z+1; if sum=3 then d:=d+1; if sum=4 then v:=v+1; if sum=5 then f:=f+1; if sum=6 then s:=s+1; if sum=7 then si:=si+1; if sum=8 then a:=a+1; if sum=9 then ne:=ne+1; if sum=10 then ze:=ze+1; if sum=11 then e:=e+1; if sum=12 then zw:=zw+1; end; end;