________________________________________________________________________________
Inhalt....: Das Ziegenproblem
Kategorie.: Arbeitsblatt
Mathematik: Stochastik
MuPAD.....: 3.0.0
Datum.....: 2003-06-23
Autoren...: Julia Faflek <faflek@mupad.de>
Funktionen: random, minus, plot::PointList2d, plot::Scene2d
________________________________________________________________________________
Das Ziegenproblem oder wie gewinnt man
Das Ziegenproblem ist ein klassisches Beispiel dafür, wie sehr Stochastik und Wahrschein-
lichkeitsrechnung immer wieder erstaunen und verwundern können.
Der Kandidat in einer TV-Spielshow soll eine von drei verschlossenen Türen
wählen. Dabei befindet sich hinter einer der Türen der Hauptpreis, ein sehr
teures Auto; hinter den beiden anderen Türen warten leider nur Ziegen.
Der Kandidat entscheidet sich also für eine Tür, nennen wir sie Nummer 1.
Danach lässt der Moderator, der weiß hinter welcher Tür sich der Gewinn be-
findet, eine der anderen beiden Türen öffnen. Dort sieht man eine meckernde
Ziege. Nun fragt der Moderator, ob der Kandidat bei der Tür Nr. 1 bleiben
möchte oder ob er sich lieber für die andere verschlossene Tür (Nr. 2) ent-
scheiden will.
Nun stellen sich die folgenden Fragen:
Hinter welcher der beiden Türen befindet sich das Auto mit größerer Wahr-
scheinlichkeit? Oder sind die Chancen auf den Gewinn bei beiden Türen
gleich? Wie soll sich der Kandidat also entscheiden?
Zur Beantwortung dieser Fragen modellieren wir das Spiel mit MuPAD und
werten dieses experimentell aus, indem wir die Anzahl der Gewinne zählen,
wenn der Kandidat zu Tür Nr.2 wechselt. Analog zählen wir die Gewinnanzahl
bei Festhalten an der Entscheidung für Tür Nr.1.
Wir schreiben eine Prozedur, die als Übergabeparameter die Anzahl der
Versuchsdurchführungen erhält und legen für die beiden Möglichkeiten, zu
gewinnen, Zählervariablen fest:
TV_Spielshow := proc(n)
local GewinnanzahlOhneWechsel, GewinnanzahlMitWechsel;
begin
GewinnanzahlOhneWechsel := 0:
GewinnanzahlMitWechsel := 0:
end_proc:
So sieht der Rahmen unserer Prozedur aus. Nun müssen wir ihn noch füllen.
Dazu brauchen wir eine for-Schleife, damit das Experiment n-mal ausgeführt
wird.
TV_Spielshow := proc(n)
local GewinnanzahlOhneWechsel, GewinnanzahlMitWechsel, i;
begin
GewinnanzahlOhneWechsel := 0:
GewinnanzahlMitWechsel := 0:
for i from 1 to n do
end_for:
end_proc:
Jetzt müssen wir die Schleife schreiben. Wir bestimmen mittels des MuPAD-
internen Zufallsgenerators random(1..3)() hinter welcher der drei Türen
sich der Hauptgewinn befindet:
TV_Spielshow := proc(n)
local GewinnanzahlOhneWechsel, GewinnanzahlMitWechsel, i,
GewinnTuer;
begin
GewinnanzahlOhneWechsel := 0:
GewinnanzahlMitWechsel := 0:
for i from 1 to n do
GewinnTuer := random(1..3)():
end_for:
end_proc:
Analog bestimmen wir die Tür, die der Kandidat gewählt hat und die Türen,
hinter denen eine Ziege steht und die der Kandidat nicht gewählt hat.
TV_Spielshow := proc(n)
local GewinnanzahlOhneWechsel, GewinnanzahlMitWechsel, i,
GewinnTuer, KandidatTuer, RestTueren, Anzahl;
begin
GewinnanzahlOhneWechsel := 0:
GewinnanzahlMitWechsel := 0:
for i from 1 to n do
GewinnTuer := random(1..3)():
KandidatTuer := random(1..3)():
RestTueren := {1, 2, 3} minus {GewinnTuer, KandidatTuer}:
Anzahl := nops(RestTueren):
end_for:
end_proc:
Was sagt uns die Anzahl dieser Türen?
Gibt es nur eine Tür, die der Kandidat nicht gewählt hat und hinter der sich eine
Ziege befindet, so hat sich der Kandidat für eine "Ziegentür" entschieden und
der Moderator lässt die Resttür öffnen.
Ist die Anzahl der Resttüren 2, so hat der Kandidat die Tür mit dem Auto gewählt
und der Spielleiter zeigt zufällig eine der beiden Resttüren.
In MuPAD setzen wir dies mittels einer if-Abfrage um.
TV_Spielshow := proc(n)
local GewinnanzahlOhneWechsel, GewinnanzahlMitWechsel, i,
GewinnTuer, KandidatTuer, RestTueren, Anzahl,
OeffneTuer;
begin
GewinnanzahlOhneWechsel := 0:
GewinnanzahlMitWechsel := 0:
for i from 1 to n do
GewinnTuer := random(1..3)():
KandidatTuer := random(1..3)():
RestTueren := {1, 2, 3} minus {GewinnTuer, KandidatTuer}:
Anzahl := nops(RestTueren):
if (Anzahl = 1) then
OeffneTuer := RestTueren[1]:
else
OeffneTuer := RestTueren[random(1..2)()]:
end_if:
end_for:
end_proc:
Nun zählen wir die Anzahl der Gewinne, falls der Kandidat an seiner Strategie
festhält und die entsprechende Anzahl bei einem Wechsel der Tür. Dann be-
stimmen wir die relativen Häufigkeiten für den Gewinn bei beiden Strategien
und geben die Anzahl der Versuchsdurchführungen, die Gewinnanzahl ohne
Wechsel, die Gewinnanzahl mit Wechsel, sowie die beiden relativen Häufig-
keiten zurück.
TV_Spielshow := proc(n)
local GewinnanzahlOhneWechsel, GewinnanzahlMitWechsel, i,
GewinnTuer, KandidatTuer, RestTueren, Anzahl,
OeffneTuer, WechselTuer, GewinnhaeufigkeitOhneWechsel,
GewinnhaeufigkeitMitWechsel;
begin
GewinnanzahlOhneWechsel := 0:
GewinnanzahlMitWechsel := 0:
for i from 1 to n do
GewinnTuer := random(1..3)():
KandidatTuer := random(1..3)():
RestTueren := {1, 2, 3} minus {GewinnTuer, KandidatTuer}:
Anzahl := nops(RestTueren):
if (Anzahl = 1) then
OeffneTuer := RestTueren[1]:
else
OeffneTuer := RestTueren[random(1..2)()]:
end_if:
if (GewinnTuer = KandidatTuer) then
GewinnanzahlOhneWechsel := GewinnanzahlOhneWechsel + 1:
end_if:
WechselTuer := op({1, 2, 3} minus {OeffneTuer} minus
{KandidatTuer}):
if (GewinnTuer = WechselTuer) then
GewinnanzahlMitWechsel := GewinnanzahlMitWechsel + 1:
end_if:
end_for:
GewinnhaeufigkeitOhneWechsel := GewinnanzahlOhneWechsel/n:
GewinnhaeufigkeitMitWechsel := GewinnanzahlMitWechsel/n:
return(n, GewinnanzahlOhneWechsel, GewinnanzahlMitWechsel,
GewinnhaeufigkeitOhneWechsel,
GewinnhaeufigkeitMitWechsel):
end_proc:
Schließlich lassen wir uns das Ergebnis als Text auf dem Bildschirm ausgeben:
Textausgabe := proc(n)
local Aufruf;
begin
Aufruf := TV_Spielshow(n):
print(Unquoted,
"Anzahl der Versuchsdurchführungen = "
.Aufruf[1]. "\n".
"Gewinnanzahl ohne Wechsel = "
.Aufruf[2]. "\n".
"Gewinnanzahl mit Wechsel = "
.Aufruf[3]. "\n".
"Relative Gewinnhäufigkeit ohne Wechsel = "
.expr2text(float(Aufruf[4])). "\n".
"Relative Gewinnhäufigkeit mit Wechsel = "
.expr2text(float(Aufruf[5]))):
end_proc:
Mittels dieser Prozedur können wir uns jetzt die Ergebnisse beliebig vieler
Versuchsdurchführungen ansehen:
Textausgabe(100);
Textausgabe(1000);
Textausgabe(10000);
Anzahl der Versuchsdurchführungen = 100
Gewinnanzahl ohne Wechsel = 35
Gewinnanzahl mit Wechsel = 65
Relative Gewinnhäufigkeit ohne Wechsel = 0.35
Relative Gewinnhäufigkeit mit Wechsel = 0.65
Anzahl der Versuchsdurchführungen = 1000
Gewinnanzahl ohne Wechsel = 347
Gewinnanzahl mit Wechsel = 653
Relative Gewinnhäufigkeit ohne Wechsel = 0.347
Relative Gewinnhäufigkeit mit Wechsel = 0.653
Anzahl der Versuchsdurchführungen = 10000
Gewinnanzahl ohne Wechsel = 3353
Gewinnanzahl mit Wechsel = 6647
Relative Gewinnhäufigkeit ohne Wechsel = 0.3353
Relative Gewinnhäufigkeit mit Wechsel = 0.6647
An diesen Ausgaben können wir erkennen, dass man mit der Strategie, die
Tür zu wechseln, eine höhere Wahrscheinlichkeit hat zu gewinnen. Um diese
These zu untermauern, wollen wir die Ergebnisse grafisch interpretieren.
Grafikausgabe := proc(n)
local ListeOhneWechsel, ListeMitWechsel, i, p1, p2;
begin
ListeOhneWechsel := [0$n]:
ListeMitWechsel := [0$n]:
for i from 1 to n do
Aufruf := TV_Spielshow(i):
ListeOhneWechsel[i] := [i, Aufruf[4]]:
ListeMitWechsel[i] := [i, Aufruf[5]]:
end_for:
p1 := plot::Polygon2d(ListeOhneWechsel, PointsVisible):
p2 := plot::Polygon2d(ListeMitWechsel, Color = RGB::Red,
PointsVisible):
plot(plot::Scene2d(p1,p2));
end_proc:
Nun können wir mit nur einem Befehl die beiden Häufigkeiten als Graph visualisieren:
Grafikausgabe(100);
Grafikausgabe(200);


Ein verblüffendes Ergebnis: Die Wahrscheinlichkeit zu gewinnen ist "fast"
immer größer, wenn man sich für das andere Tor entscheidet. Eine theo-
retische Analyse wollen wir an dieser Stelle jedoch nicht durchführen.
_______________________________________________________________________________
Übungen:
1. Machen Sie sich mit der Funktion random vertraut.
2. Besuchen Sie die Hilfeseiten zu ?plot::Pointlist und ?plot::Scene.
_______________________________________________________________________________
Anmerkungen:
1. Unter www.schule.mupad.de/material/ finden Sie weitere interessante Notebooks.
2. Weitere Anregungen finden Sie in der Buchreihe Mathematik 1 x anders. In dieser Reihe wird eine Vielzahl
ssunterschiedlichster mathematischer Probleme mit MuPAD gelöst. Die Bücher können unter
sswww.schule.mupad.de/literatur kostenfrei kopiert werden.
_______________________________________________________________________________