Rubrik: Verschiedenes / Sonstiges | VB-Versionen: VB4, VB5, VB6 | 23.04.01 |
Würfel-Simulation Ermitteln der durchschnittlichen Anzahl von Würfen bei einer vorgegebener Anzahl Versuchserien, bis eine Sechs geworfen wird. | ||
Autor: Dieter Otter | Bewertung: | Views: 22.219 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Dieser Tipp entstammt aus einem aktuelle Forenbeitrag. Die Frage war, wieviele Wurfversuche man durchschnittlich benötigt, um eine Sechs zu werfen - und das bei einer vorgegebener Anzahl von Versuchsserien.
Dim MaxVersuch As Long Dim AktVersuch As Long Dim AktWurf As Long Dim GesWurf As Long Dim Schnitt As Long Dim Zahl As Integer MaxVersuch = 10 ' Anzahl Versuchsserien AktVersuch = 1 While AktVersuch <= MaxVersuch AktWurf = 1 Do ' Zufallszahl zurücksetzen Randomize -Timer ' Anzahl Würfe zählen AktWurf = AktWurf + 1 ' Zufallszahl ermitteln Zahl = Int(6 * Rnd + 1) Loop Until Zahl = 6 ' Gesamt-Würfe GesWurf = GesWurf + AktWurf ' Aktuelle Anzahl Versuche AktVersuch = AktVersuch + 1 Wend ' Durchschnitt anzeigen Debug.Print "Bei " & MaxVersuch & " Versuchsserien, " & _ "mußte im Schnitt " & _ Format$(GesWurf / MaxVersuch, "0.0") & _ " x gewürfelt werden"
Erläuterungen zur Rnd-Funktion
Das Ermitteln einer Zufallszahl erfolgt in Visual-Basic mit Hilfe der Rnd-Funktion. Die Rnd-Funktion gibt hierbei eine Zahl im Berich 0 und <1 zurück. Um nun eine Ganzzahl in einem vorgegebenen Wertebereich zufällig zu ermitteln, geht man folgendermaßen vor:
Zahl = Int((Obergrenze - Untergrenze + 1) * Rnd + 1)
Obergrenze steht für die höchste Zahl und Untergrenze für die niedrigste Zahl. Das bedeutet also für das Würfel-Experiment:
Zahl = Int((6 - 1 + 1) * Rnd + 1)
was ja gleichbedeutend ist mit:
Zahl = Int(6 * Rnd + 1)
Zu beachten ist noch, daß Rnd immer die selben Zufallszahlen generiert. Um dies zu verhindern, dient der Ausdruck:
Randomize -Timer