Wiederholt würfeln
Zielsetzung
Beim Spiel "Mensch ärgere dich nicht" darf man erst loslegen, wenn man eine 6 gewürfelt hat.
Manchmal dauert das ziemlich lang. Wie lang - das soll mit einem Programm hier untersucht werden.
Aufgabe 1
Probiere es mit einem realen Würfel aus. Wie viele Würfe benötigst du, bis eine 6 fällt? Wenn du das mehrfach ausprobierst, dann kannst du auch die durchschnittliche Anzahl der benötigten Würfe abschätzen.
Ablaufmodellierung
Bevor man ein Programm schreibt, sollte man sich den Ablauf der Eingaben, Berechnungen und Ausgaben klarmachen. Das folgende Flussdiagramm zeigt einen möglichen Ablauf.
Mit einem Struktogramm lässt sich die Ablaufstruktur weiter verdeutlichen.
Aufgabe 2
Erkläre anhand der Diagramme, wie die Anzahl der benötigten Würfelwürfe hier bestimmt wird.
Implementierung
Das mit einem Flussdiagramm / Struktogramm beschriebene Verfahren wird jetzt in ein Python-Programm übersetzt.
from random import randint # Verarbeitung augenzahl = randint(1, 6) zaehler = 1 while augenzahl != 6: augenzahl = randint(1, 6) zaehler = zaehler + 1 # Ausgabe print('Anzahl der Versuche: ', zaehler)
Aufgabe 3
(a) Teste zunächst das gezeigte Programm.
(b) Ergänze es so, dass alle Würfelergebnisse zur Kontrolle ausgegeben werden.
Aufgabe 4
Untersuche mit einem Programm, ob der mit dem Zufallsgenerator von Python simulierte Würfel fair ist. Hierzu soll ein Würfel 1000 mal (bzw. eine vom Benutzer eingegebene Anzahl mal) geworfen werden. Dabei soll mitgezählt werden, wie oft eine 6 fällt. Ausgegeben werden soll die Gesamtanzahl der Würfe und die Anzahl der Treffer (hier: 6). Wie kann man aus den beiden Zahlen auf Fairness schließen?
Aufgabe 5
Entwickle ein Programm, mit dem man herausfinden kann, wie oft man durchschnittlich würfeln muss, bis man eine 6 erhält. Benutze hierzu zwei ineinander geschachtelte Wiederholungen. Beginne mit einem Struktogramm oder Flussdiagramm. Wenn die Ablauflogik stimmt, dann übersetze das Diagramm in ein Programm.
Quellen
Grafik: Mensch ärgere Dich nicht - Urheber: FischX - Lizenz: CreativeCommons by-sa-3.0