TEIL 9: ZUFALLSZAHLEN, Aufgaben 49 bis 53


Will man Zufallsexperimente wie z.B. Würfelspiele simulieren, so braucht man dazu einen Generator von Zufallszahlen. Dies wird in VBasic durch die RND-Funktion (random = zufällig) und die RANDOMIZE-Anweisung, die dafür sorgt, daß die RND-Funktion nicht immer dieselben Zahlenfolgen generiert, realisiert.

Die Rnd-Funktion kann mit rnd oder rnd(Zahl) aufgerufen werden. Für die Rückgabewerte gilt:

Wert von Zahl Generierte Zufallszahl
Kleiner als Null Immer dieselbe Zahl, die als Startwert Zahl verwendet.
Größer als Null Die nächste Zufallszahl in der Folge.
Gleich Null Die zuletzt generierte Zahl.
Nicht angegeben Die nächste Zufallszahl in der Folge.


Die Rnd-Funktion gibt einen Wert zurück, der kleiner als 1, aber größer als oder gleich Null ist. Der Wert von Zahl bestimmt, wie Rnd eine Zufallszahl generiert: Für jeden gegebenen Standardwert wird dieselbe Zufallszahlenfolge generiert, weil bei jedem nachfolgenden Aufruf der Rnd-Funktion die vorherige Zahl als Startwert für die nächste Zahl in der Folge dient. Vor dem Aufruf von Rnd verwendet man die Randomize-Anweisung ohne Argument, um den Zufallszahlengenerator mit einem Startwert zu initialisieren, der auf dem Systemzeitgeber basiert.

Besser ist es, die rnd-Funktion mit randomize (1) zu initialisieren(Würfelexperimente ergeben dann eine bessere Gleichverteilung als bei Verwendung des Timers bei randomize.

Aufgabe 49


Lies zunächst die Erläuterungen am Anfang dieses Kapitels !!!

Das ff. Programm ZUFATEST soll lediglich das Arbeiten mit rnd und randomize verdeutlichen:



Mit Hilfe der Format$-Funktion werden die Zufallszahlen gerundet. Von x,0 bis x,4 wird abgerundet, von x,5 bis x,9 wird hochgerundet.

For i = 1 To 10
    Randomize (1)
    zahl_1 = Rnd
    Text4.Text = "rnd = " + Str(zahl_1)

    zahl_1 = zahl_1 * 10
    Text1.Text = "zahl_1*10 = " + Str(zahl_1)

    zahl_1 = Format$(zahl_1, "0")
    Text2.Text = "Format$(zahl_1, '0') = " + Str(zahl_1)

    zahl_1 = Val(Str(zahl_1))

    Text3.Text = "val (str(zahl_1)) = " + Str(zahl_1)
Next i


Denke daran, auch eine EXE-Datei zu erstellen!

Aufgabe 50


Im Programm ZUFALL_1 wird wieder zahl_1 = rnd benutzt. Durch geeignete Multiplikation und Formatierung können dann jeweils 10 Zufallszahlen in gewünschten Bereich ausgegeben werden:

Als Beispiel die Zählschleife für den Bereich - 5 bis + 5:

For i = 1 To 10

     Randomize (1)
     zahl_1 = Rnd
     zahl_1 = zahl_1 * 10 - 5
     Text1.Text = Text1.Text + "   " + Str(zahl_1)
  Next i


Alles weitere sollte kein Problem mehr für dich sein. Speichere nach Abschluß der Arbeit Zufall_1 auch noch als Zufall_2, das spart Arbeit beim Anlegen des Formulars und auch beim Eintippen des Programmcodes.



Aufgabe 51


In dieser Aufgabe ZUFALL_2 soll überprüft werden, ob unsere "Würfel" auch nicht manipuliert sind: bei jedem Wurf soll mitgezählt werden, wie oft die jeweilige Augenzahl gewürfelt wurde:



Die Labels 1 bis 6 und die Textboxen 1 bis 6 sollen für das Mitzählen sein, Label 7 soll die caption-Eigenschaft "Augenzahl" haben, die 7. Textbox darunter soll die jeweils gewürfelte Augenzahl anzeigen.

Für die einzelnen Augenzahlen werden verschiedene Zähler definiert, die in einer select-case-Anweisung heraufgesetzt werden.
Es wird solange gewürfelt (do ... loop until ... ), bis eine der Augenzahlen 1 bis 6 erreicht wird.
Nur wenn 1 bis 6 gewürfelt wurde, wird dies in der 7. Textbox angezeigt (if ... end if). Die 6 Zähler werden dann in der select-case-Mehrfach-Abfrage hochgesetzt.

Mit der Lösungshilfe sollten nun keine Fragen mehr offen sein :



Wenn Zufall_2 fertig und gespeichert ist, speichere es noch ein 2. Mal unter dem Namen Zufall_3.

Aufgabe 52

In zufall_3 soll solange gewürfelt werden, bis der Würfel eine 6 zeigt. Die Anzahl der Würfe soll mitgezählt werden:



Hier gibt es nicht Neues, du solltest alles allein programmieren können. Denke ans Speichern nach getaner Arbeit und speichere ein 2. Mal unter dem Namen zufall_4.

Aufgabe 53

Diesmal sollen 200 Zufallsexperimente ausgeführt werden. Es soll die durchschnittliche Anzahl der Würfe, die man dabei bis zur 6 braucht, angezeigt werden.



Hier wieder Lösungshilfen, erst mal durchdenken, dann erst abpinseln !!!



Speichern nicht vergessen !!! Auch mal wieder an's Ausdrucken der Programmcodes von zufatest, zufall_1 bis zufall_4 denken !!!





© 2010 Asti PoVRay-Site Mathematische Streiflichter