Das Ziegenproblem
Problemstellung
www.ziegenproblem.de
Planung des Programms
GUI
Es muss eine Eingabemöglichkeit für die Türnummer geben und einen Button
bWaehlen, der
die Eingabe auslöst. Die Anzahl der Spiele und der gewonnenen Spiele sollen angezeigt werden.
Anwendungsfälle
- Es gibt 5 globale Variablen:
autoplatz wird anfänglich zufällig mit 1,2 oder 3
belegt und gibt die Tür an, hinter der sich das Auto befindet
teil wird anfänglich mit 1 belegt und gibt an, in welchem Teil des Spiels man
sich befindet. Die Ereignisbehandlung von bWaehlen hängt von teil ab.
gewaehlt enthält die Nummer der gewählten Tür
spiele wird zu Beginn auf 0 gesetzt und gibt die Anzahl der Spiele an
gewonnen wird zu Beginn auf 0 gesetzt und gibt die Anzahl der
gewonnenen Spiele an
- bWaehlen löst im Fall "teil = 1" Folgendes aus:
Die Nummer der gewählten Tür wird in der Variablen gewaehlt abgelegt.
Der Moderator öffnet (zufällig) eine Tür (eventuell eine lokale Variable ztuer)
vorsehen, hinter der sicher eine Ziege steht(≠autoplatz) und die nicht gewählt
(≠gewaehlt) ist. Verfeinerung dazu
Im Programm könnte das zunächst durch eine alert-Meldung geschehen.
teil wird auf 2 gesetzt, um beim nächsten Drücken des Buttons bWaehlen
eine andere Reaktion zeigen zu können
- bWaehlen löst im Fall "teil = 2" Folgendes aus:
Es wird eine Auswertung gemacht (autoplatz = gewaehlt?).
Es wird zum Beispiel mit alert eine Meldung ausgegeben.
Die Statistik wird geführt und auf dem Bildschirm ausgegeben.
Ein neues Spiel wird vorbereitet (autoplatz zufällig belegen,
teil wieder auf 1 stellen).
Erweiterungen
Das Programm könnte grafisch verschönert werden. Es könnte die prozentuale Häufigkeit der
gewonnenen Spiele angezeigt werden. Man könnte viele Spiele nach einer bestimmten Strategie
machen lassen.
Verfeinerung zur Wahl der "Ziegen-Tür"
Es gilt zwei Fälle zu unterscheiden:
autoplatz ≠ gewaehlt und
autoplatz = gewaehlt
Im Fall
"autoplatz ≠ gewaehlt" gilt sicher
autoplatz + gewaehlt + ztuer = 6.
Daher läßt sich
ztuer zu
6 - autoplatz - gewaehlt berechnen. Das ist ein
bisschen trickreich, vermeidet aber viele Fallunterscheidungen.
Der Fall
"autoplatz = gewaehlt" macht mehr Probleme, da
ztuer unter zwei
Möglichkeiten zufällig gewählt werden muss.
Lösungsmöglichkeit: Es werden die drei Fälle
"autoplatz=1", "autoplatz=2" und "autoplatz=3" unterschieden:
if (autoplatz == 1 ) { if (Math.random()
|