Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ziegenproblem (https://www.delphipraxis.net/179407-ziegenproblem.html)

0x92 5. Mär 2014 15:34

Delphi-Version: 5

Ziegenproblem
 
Habs in einem anderen Forum mitbekommen und mich mal darangesetzt.

http://www.zeit.de/2004/48/N-Ziegenproblem

Die Ausgangssituation des Ziegenproblems lautet folgendermaßen: Sie sind Kandidat einer Fernsehshow und dürfen eine von drei verschlossenen Türen auswählen. Hinter einer der Türen wartet der Hauptgewinn, ein prachtvolles Auto, hinter den anderen beiden steht jeweils eine meckernde Ziege.

Frohgemut zeigen Sie auf eine der Türen, sagen wir Nummer eins. Doch der Showmaster, der weiß, hinter welcher Tür sich das Auto befindet, lässt sie nicht sofort öffnen, sondern sagt geheimnisvoll: »Ich zeige Ihnen mal was!« Er lässt eine andere Tür öffnen, sagen wir Nummer drei – und hinter dieser steht eine Ziege und glotzt erstaunt ins Publikum. Nun fragt der Showmaster lauernd: »Bleiben Sie bei Tür Nummer eins, oder wählen Sie doch lieber Nummer zwei?« Was sollten Sie tun?

Dies ist das Ziegenproblem, das im angelsächsischen Sprachraum »Monty Hall Problem« genannt wird. Es geht auf die Spielshow Let's Make a Deal zurück, eine Art amerikanische Variante von Wetten, dass... , die von Monty Hall moderiert wurde und vor allem in den sechziger und siebziger Jahren populär war. Die amerikanische Autorin Marilyn vos Savant, die als Frau mit dem höchsten je gemessenen IQ gilt, stellte das Ziegenproblem im Jahre 1990 in ihrer regelmäßigen Magazin-Kolumne vor und löste damit eine weltweite Debatte aus, die bis heute anhält.

https://github.com/0x92/GoatProblem

Naja und hier mein bisheriger Code dazu. Gibt anscheinend noch einen kleinen Bug denn manchmal gewinnt man obwohl da eine Ziege sein sollte xD

Delphi-Quellcode:
{ ##############################################################
  ## Modul:    GoatProblem
  ## Author:   0x92;
  ## Release:  05.03.2014
  ## Contact:  0x92dev@gmail.com | https://github.com/0x92
  ## -----------------------------------------------------------
  ##############################################################}

program GoatProblem;

{$APPTYPE CONSOLE}

uses
  SysUtils;

{Es soll drei Türen geben. Als erstes wird aus Zufall definiert hinter welcher Tür
   der Preis liegt. (Auto) Dann soll der Kandidat die erste Wahl treffen(Z.B. Tür 1).
   Dann Soll eine der anderen Türen aufgedeckt werden, und nun soll der Kandidat sich erneut
   entscheiden ob er bei seiner Wahl bleibt oder wechselt....}

var
  Doors: array of Integer;
  i, Doorcount, WinPosition, SelectedDoor, SelectedDoor2, RandomDoor: Integer;
  Decision: String;

// Arraywerte
// 0 = Ziege | 1 = Gewinn
begin
  try
    Randomize;
    Doorcount := 0;
    RandomDoor := 0;
    WriteLn('How many doors should be used for your experiment?');

    while Doorcount <= 2 do
    begin
      WriteLn;
      Write('# NOTE: Please use a higher value than 2!    ');
      ReadLn(Doorcount);
    end;

    SetLength(Doors, Doorcount);

    WinPosition := Random(Doorcount);
    if WinPosition > 0 then
    WinPosition := WinPosition -1;

    Doors[WinPosition] := 1;          //Gewinn wird auf eine Tür verteilt

    { 0 0 0
      0 1 2}

    //Nächster Schritt abfragen welche tür genommen werden soll
    WriteLn;
    Write('Please submit a door number between 1 and ' + IntToStr(Doorcount) + '. ');
    ReadLn(SelectedDoor); // SelectedDoor = Die Tür welche ausgewählt wurde
    WriteLn;
    WriteLn('You selected door number ' + IntToStr(SelectedDoor) + '.');

    while (RandomDoor = SelectedDoor) or (RandomDoor = WinPosition) do  //Solange die Zufallstür die ausgewählte/Gewinn Tür ist nochmal neu generieren
    begin
      RandomDoor := Random(Doorcount);
    end;

    WriteLn('I will show you one goatdoor!');

    if Doors[RandomDoor] = 0 then  //Wenn das was im Array drinsteht 0 ist vom Index RandomDoor
      WriteLn('Door number: ' + IntToStr(RandomDoor +1) + ' Ohhh, it is a goat! ;O');
      WriteLn('Do you want to change your door?');
      WriteLn;

    Decision := 'None';

    while not (Decision = 'Y') and not (Decision = 'y') and not (Decision = 'N') and not (Decision = 'n') do
    begin
      WriteLn('# NOTE: Only Y/y or N/n accepted');
      ReadLn(Decision);
    end;

    if (Decision = 'N') or (Decision = 'n') then   //Tür zeigen
    begin
      if Doors[SelectedDoor] = 0 then
      begin
        WriteLn('Ohhh, it is a goat! ;O You lost the game.');
      end
      else
      begin
        WriteLn('WHAT THE FUCK IS GOING ON?? WE GOT A MOTHERFUCKIGN WINNER!!! TAKE YOUR PRICE.');
        WriteLn('With that big amount of toilet paper (over 9000) you will never be forced to buy toilet paper again.');
      end;
    end;

    if (Decision = 'Y') or (Decision = 'y') then   //Tür zeigen
    begin
      WriteLn('Please submit a door number between 1 and ' + IntToStr(Doorcount) + '.');
      ReadLn(SelectedDoor2); // SelectedDoor = Die Tür welche ausgewählt wurde
      WriteLn('You have selected door number ' + IntToStr(SelectedDoor2) + '.');
      if Doors[SelectedDoor2] = 0 then
      begin
        WriteLn('Ohhh, it is a goat! ;O You lost the game. Fool! HAHA');
      end
      else
      begin
        WriteLn('WHAT THE FUCK IS GOING ON?? WE GOT A MOTHERFUCKIGN WINNER!!! TAKE YOUR PRICE.');
        WriteLn('With that big amount of toilet paper (over 9000) you will never be forced to buy toilet paper again.');
      end;
    end;
  finally
    ReadLn;
  end;
end.

jfheins 5. Mär 2014 15:57

AW: Ziegenproblem
 
Zitat:

Zitat von 0x92 (Beitrag 1250759)
Naja und hier mein bisheriger Code dazu. Gibt anscheinend noch einen kleinen Bug denn manchmal gewinnt man obwohl da eine Ziege sein sollte xD

Ganz schlechte Fehlerbeschreibung, insbesondere da das Ergebnis ja zufällig ist. Dein Code sieht eigentlich okay aus.

Denk' auch dran, dass man seine Gewinnchance nur erhöht (von 33% auf 66%), wenn man die Tür wechselt. Man kann immer noch verlieren.

Back2Code 5. Mär 2014 16:01

AW: Ziegenproblem
 
Zitat:

Zitat von jfheins (Beitrag 1250761)
Zitat:

Zitat von 0x92 (Beitrag 1250759)
Naja und hier mein bisheriger Code dazu. Gibt anscheinend noch einen kleinen Bug denn manchmal gewinnt man obwohl da eine Ziege sein sollte xD

Ganz schlechte Fehlerbeschreibung, insbesondere da das Ergebnis ja zufällig ist. Dein Code sieht eigentlich okay aus.

Denk' auch dran, dass man seine Gewinnchance nur erhöht (von 33% auf 66%), wenn man die Tür wechselt. Man kann immer noch verlieren.

Ich sehe da atm noch gar keine Gewinnchancen... o.O

himitsu 5. Mär 2014 16:06

AW: Ziegenproblem
 
Warum ist Doors als Integer und nicht als Boolean deklariert?

Und warum wird dieses Array nicht initialisiert?
Bist du dir sicher, daß nach dem SetLength alle Integer auf 0 (False) stehen?

Zitat:

Delphi-Quellcode:
    if Doors[RandomDoor] = 0 then //Wenn das was im Array drinsteht 0 ist vom Index RandomDoor
      WriteLn('Door number: ' + IntToStr(RandomDoor +1) + ' Ohhh, it is a goat! ;O');
      WriteLn('Do you want to change your door?');
      WriteLn;

Die CodeFormatierung meint, daß da BEGIN und END fehlen.

Zitat:

Delphi-Quellcode:
    Decision := 'None';

    while not (Decision = 'Y') and not (Decision = 'y') and not (Decision = 'N') and not (Decision = 'n') do
    begin
      WriteLn('# NOTE: Only Y/y or N/n accepted');
      ReadLn(Decision);
    end;

Die Repeat-Until-Schleife kennst du aber?

Delphi-Quellcode:
    repeat
      WriteLn('# NOTE: Only Y/y or N/n accepted');
      ReadLn(Decision);
    until (UpperCase(Decision) = 'Y') or (UpperCase(Decision) = 'N');
Kann es sein, daß da noch eine Schleife fehlt?
Vorallem Wenn man mehr als 3 Türen vorgibt.

Und nicht vergessen, der Moderator darf nur fragen, wenn mehr als 2 Türen noch nicht gewählt wurden, denn ansonsten würde man nie verlieren können,
da der Moderator ja alle falschen Türen öffnen würde, mit seinem "ich zeige ihnen mal was".

0x92 5. Mär 2014 16:08

AW: Ziegenproblem
 
Zitat:

Zitat von himitsu (Beitrag 1250764)
Warum ist Doors als Integer und nicht als Boolean deklariert?

Und warum wird dieses Array nicht initialisiert?
Bist du dir sicher, daß nach dem SetLength alle Integer auf 0 (False) stehen?

Zitat:

Delphi-Quellcode:
    if Doors[RandomDoor] = 0 then //Wenn das was im Array drinsteht 0 ist vom Index RandomDoor
      WriteLn('Door number: ' + IntToStr(RandomDoor +1) + ' Ohhh, it is a goat! ;O');
      WriteLn('Do you want to change your door?');
      WriteLn;

Die CodeFormatierung meint, daß da BEGIN und END fehlen.

Zitat:

Delphi-Quellcode:
    Decision := 'None';

    while not (Decision = 'Y') and not (Decision = 'y') and not (Decision = 'N') and not (Decision = 'n') do
    begin
      WriteLn('# NOTE: Only Y/y or N/n accepted');
      ReadLn(Decision);
    end;

Die Repeat-Until-Schleife kennst du aber?

Delphi-Quellcode:
    repeat
      WriteLn('# NOTE: Only Y/y or N/n accepted');
      ReadLn(Decision);
    until (UpperCase(Decision) = 'Y') or (UpperCase(Decision) = 'N');

Bisher noch nie eingesetzt...

Und bzgl. des Arrays...Ich hatte erst ne Schleife drin die alle Elemente auf 0 erstmal setzt hab dann aber beim Debuggen gesehen, dass des sowieso schon passiert und alles auf 0 steht :o

Popov 5. Mär 2014 19:43

AW: Ziegenproblem
 
Ich hab vor einiger Zeit mich auch damit auseinandergesetzt, nur weil ich keinen Vorteil darin sah zu wechseln. Ich hab im Laufe meiner Überlegungen ein halbes Dutzend Programme geschrieben um die These überprüfen. Leider habe ich später in eignen einen Fehler entdeckt, habe es aber versäumt die zu löschen, so dass ich heute nicht mehr weiß welche Programme nun falsch sind.

Hier eines der Programme:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const
  AnzahlSpiele = 1000;
var
  i, Preis, Ziege1, Ziege2, DirektTreffer, WechselTreffer,
  ErsteWahl, NeueWahl: Integer;
begin
  DirektTreffer := 0;
  WechselTreffer := 0;
  Randomize;

  for i := 1 to AnzahlSpiele do
  begin
    //Die Wahl ist eigentlich ein unnötig, man könnte auch 1, 2, 3 nehmen,
    //aber wir tun mal so

    //Preis und zwei Ziegen zufällig auf Tore 1, 2 und 3 verteilen
    Preis := Random(3) + 1;
    repeat Ziege1 := Random(3) + 1 until Ziege1 <> Preis;
    repeat Ziege2 := Random(3) + 1 until (Ziege2 <> Preis) and (Ziege2 <> Ziege1);

    //Erste Wahl des Spielers, bei der er bleibt
    ErsteWahl := Random(3) + 1;
    //repeat ErsteWahl := Random(3) + 1 until ErsteWahl <> Ziege1;

    //Zweite Wahl des Spielers, nach dem Öffnen des Tores mit Ziege1
    repeat NeueWahl := Random(3) + 1 until NeueWahl <> Ziege1;

    //Zählen
    if ErsteWahl = Preis then Inc(DirektTreffer); //Treffer des Spielers beim nicht Wechsel
    if NeueWahl = Preis then Inc(WechselTreffer); //Treffer des Spielers beim Wechsel
  end;

  ShowMessage(Format('Direkte Treffer: %d, Wechsel Treffer: %d', [DirektTreffer, WechselTreffer]));
end;
Ich bin selbst heute der Meinung, dass es keinen Vorteil gibt. Ich kenne die mathematische Erklärung. Am Anfang hat man eine 33% Chance auf den Preis. Danach nimmt der Spielleiter ein Tor aus dem Spiel, wobei es immer ein Tor mit einer Ziege ist, so dass nun noch zwei Tore übrig bleiben, eines mit dem Preis und eines mit einer weiteren Ziege. Bei zwei Toren steht die Chance bei 50%. Beim Wechsel hat man nun eine Chance von 66% auf den Preis.

Das Problem ist allerdings, selbst wenn das Programm ein anderes Ergebnis nennt (aber wie gesagt, ich weiß nicht ob es das richtige Ergebnis liefert), dass man schon bei der ersten Wahl die Chance bei 50:50 lag, denn schon von Anfang an war sicher, das eines der Tore mit der Ziege aus dem Spiel genommen wird. Es war also schon von Anfang an die Wahl zwischen dem Preis und einer der Ziegen.

Der Vorteil ist somit zwar mathematisch da, weil es im Grunde zwei Spiele gibt, eines mit 33% und eines mit 50%, aber nicht praktisch, weil immer ein Tor mit einer Ziege raus fliegt.

TForm1 5. Mär 2014 20:05

AW: Ziegenproblem
 
Zitat:

Zitat von Popov (Beitrag 1250792)
Das Problem ist allerdings, selbst wenn das Programm ein anderes Ergebnis nennt (aber wie gesagt, ich weiß nicht ob es das richtige Ergebnis liefert), dass man schon bei der ersten Wahl die Chance bei 50:50 lag, denn schon von Anfang an war sicher, das eines der Tore mit der Ziege aus dem Spiel genommen wird. Es war also schon von Anfang an die Wahl zwischen dem Preis und einer der Ziegen.

Der Vorteil ist somit zwar mathematisch da, weil es im Grunde zwei Spiele gibt, eines mit 33% und eines mit 50%, aber nicht praktisch, weil immer ein Tor mit einer Ziege raus fliegt.

Der Vorteil ist nicht nur mathematisch sondern auch praktisch da, da Du ja am Anfang trotzdem aus 3 Toren wählst. Stell Dir vor, Du hast eine Chance von 1/3 den Gewinn zu bekommen; Wenn jetzt der Quizmaster eins der beiden übrigen Tore öffnet, dann muss er ja das ohne den Gewinn nehmen (außer Du bist von Anfang an Richtig, dass allerdings nur mit der Wahrscheinlichkeit von 1/3). Auf den beiden anderen liegt eine Wahrscheinlichkeit von 2/3 die beim öffnen eines Tores auf das noch geschlossene übertragen wird. Das ist relativ abstrakt, aber grundsätzlich auch praktisch so verwendbar. Interessant wäre jetzt das einige 1000 mal durchzuprobieren um diese These zu prüfen, aber laut heutigem Stand der Wissenschaft würde das schon so sein.

Mikkey 5. Mär 2014 20:11

AW: Ziegenproblem
 
Zitat:

Zitat von Popov (Beitrag 1250792)
Der Vorteil ist somit zwar mathematisch da, weil es im Grunde zwei Spiele gibt, eines mit 33% und eines mit 50%, aber nicht praktisch, weil immer ein Tor mit einer Ziege raus fliegt.

Es gibt keine zwei Spiele, sondern die erste (alle bis auf die letzte) Auswahl ist sinnlos. Nur die letzte Auswahl entscheidet über den Gewinn. Daher ist immer die Chance 50:50

Popov 5. Mär 2014 20:50

AW: Ziegenproblem
 
@TForm1

Wie schon gesagt, das Problem ist abstrakt. Der Vorteil liegt nur zwischen der Chance des ersten Durchgangs und des zweiten Durchgangs. Ich hab das Spiel beim ersten Fall falsch wiedergegeben. Korrekt lautet die Regel: zuerst hat man die Wahl zwischen drei Toren, also eine Chance von 33% auf den Gewinn. Beim zweiten Durchgang nimmt der Spielleiter vorher ein Tor mit einer Ziege raus und bietet nun den Wechsel des Tors. Nun der korrekte Vorgang: man muss auf jeden Fall wechseln, erst dann hat man die 66% Chance, wechselt man nicht, bleibt die Chance bei 33%.

Mathematisch ist alles korrekt und das zweifele ich auch nicht an. Praktisch gibt es keinen Vorteil. Den Grund habe ich schon genannt, eines der Tore mit einer der Ziegen war schon von Anfang an faktisch raus, also nicht wirklich in der Rechnung.

jfheins 5. Mär 2014 21:46

AW: Ziegenproblem
 
Zitat:

Mikkey: Es gibt keine zwei Spiele, sondern die erste (alle bis auf die letzte) Auswahl ist sinnlos. Nur die letzte Auswahl entscheidet über den Gewinn. Daher ist immer die Chance 50:50.
Popov: Praktisch gibt es keinen Vorteil.
Es gibt keine zwei Spiele, aber die erste Auswahl ist auch nicht sinnlos. Die Chance auf einen Gewinn ist auch nicht 50:50. Und auch praktisch ist es von Vorteil das Tor zu wechseln. (Warum sollte hier ein Unterschied zwischen Theorie und Praxis auftreten??)

Vielleicht wird das an einem größeren Beispiel intuitiv klar. Nehmen wir an, wir spielen nicht mit 3 Toren sondern mit 1000.
Du suchst dir ein Tor aus, tendenziell erstmal zufällig. Der Quizmaster sagt jetzt "Aha, sie haben also Tor 249 ausgewählt. Ich zeige ihnen mal was..."
Und öffnet 998 Tore, hinter jedem ist ein Zonk/Ziege. Es bleiben also genau zwei geschlossen: Deines und ein anderes Tor. (sagen wir mal, Tor 647)

Jetzt fragt er dich, ob du wechseln möchtest. Möchtest du?

Popov und Mikkey, als Anhänger der "der Firlefanz ist egal, die Chancen sind 50:50" müsste jetzt kommen "Ist eigentlich wurscht." Aber ist es nicht sehr frappierend, dass der Quizmaster genau das Tor 647 geschlossen ließ?

In Tor 249 hat man jetzt eine 0,1% Chance auf den Preis, wenn man wechselt hat man eine 99,9% Chance. Das gleiche Prinzip gilt auch für die Fälle mit weniger Toren, auch für 3 Tore.

BUG 5. Mär 2014 22:38

AW: Ziegenproblem
 
Zitat:

Zitat von jfheins (Beitrag 1250808)
Aber ist es nicht sehr frappierend, dass der Quizmaster genau das Tor 647 geschlossen ließ?

Dieser Satz hilft der Anschaulichkeit sehr auf die Sprünge :thumb:

Popov 5. Mär 2014 22:43

AW: Ziegenproblem
 
Es sind eben keine 1000 Tore, im Grunde waren es von Anfang an nur zwei Tore.

Der Aufbau ist sehr einfach. Reduziert man das Spiel auf das Wesentliche, bleibt das übrig:

Tor 1: Preis
Tor 2: Ziege
Tor 3: Ziege

Da es nur einen Preis und zwei Ziegen gibt und der Spielleiter später immer eine Ziege raus nimmt (eine der Zeigen, nicht ein x-beliebiges Tor), ergibt sich folgendes:

Tor 1: Preis
Tor 2: Ziege

Selbst wenn einer Tor 3 gewählt hätte, dann wäre eben Tor 2 raus. Wie auch immer, eines der Tore mit Ziege fliegt im zweiten Spiel raus. Da kann man ja gleich das Spiel um ein Tor reduzieren.

Nun kann der Spieler wählen, und das ist 50:50.

jfheins 5. Mär 2014 22:59

AW: Ziegenproblem
 
Du reduziert zu viel, die Geschichte ist ganz wesentlich für die Gewinnchancen.

Kommt man in den Raum mit zwei geschlossenen Toren, weiß man es nicht besser als 50:50. Aber am Anfang hat man ja nur mit 33% richtig getippt, und diese Unsicherheit bleibt bestehen. Man könnte es auch so sehen: Du musst raten. Der Quizmaster muss genau das Tor geschlossen halten, hinter welchen der Gewinn ist. Wenn du wirklich rätst, dann hat er nur vielleicht die Chance ein beliebiges Tor geschlossen zu halten. (Weil du das mit dem Preis direkt getroffen hast)
Mit einer großen Wahrscheinlichkeit hat der Quizmaster einfach keine Wahl mehr und muss das Tor mit dem Preis geschlossen halten.

Da du da so schnell drüber gegangen bist, stell' dir doch wirklich nochmal den Fall mit 1000 Toren vor, bei dem 998 aufgehen. Würdest du danach immer noch sagen, dass beide Tore gleich wahrscheinlich den Preis enthalten?
Das Tor, dass du völlig hilflos aus 1000 Toren gewählt hast soll jetzt zu 50% den Preis enthalten?

Den Beweis hat du sicher schon gehört, aber hier nochmal in Kurzform: Preis ist immer in Tor 1. Ich wechsele immer das Tor.
Wähle ich Tor 1, verliere ich. Wähle ich Tor 2 gewinne ich. Wähle ich Tor 3, gewinne ich.
Klingt nach einer 66% Gewinnchance :wink:

Wie oben gesagt: Die Geschichte spielt eine Rolle. Wenn du erst zur Show kommst, wenn nur noch zwei Tore zu sind, dann kannst du nur 50:50 wählen. Ich würde aber dem Kandidaten 100€ zustecken, damit er mir das Tor verrät das er zuerst gewählt hat. :stupid:

Namenloser 5. Mär 2014 23:33

AW: Ziegenproblem
 
Zitat:

Zitat von jfheins (Beitrag 1250808)
Vielleicht wird das an einem größeren Beispiel intuitiv klar. Nehmen wir an, wir spielen nicht mit 3 Toren sondern mit 1000.
Du suchst dir ein Tor aus, tendenziell erstmal zufällig. Der Quizmaster sagt jetzt "Aha, sie haben also Tor 249 ausgewählt. Ich zeige ihnen mal was..."
Und öffnet 998 Tore, hinter jedem ist ein Zonk/Ziege. Es bleiben also genau zwei geschlossen: Deines und ein anderes Tor. (sagen wir mal, Tor 647)

Jetzt fragt er dich, ob du wechseln möchtest. Möchtest du?

Ohne Witz, die Erklärung ist besser als alles, was ich dazu je gehört habe.

Wir haben das in der Schule und ich glaube auch an der Uni schon mehrfach durchgekaut und mathematisch bewiesen. Formal war dann ja auch klar, dass es so sein muss, aber intuitiv hatte ich es ehrlich gesagt auch nie hundertprozentig verstanden. Jetzt schon :thumb:

himitsu 5. Mär 2014 23:55

AW: Ziegenproblem
 
Es sind vielleicht Psychologisch 66%, aber Real hast du immer eine 50:50-Chance, egal wieviele Tore es gibt.

Es kommt halt darauf an, wie gut du dich beeinflussen lässt, also ob du nachgiebst und die Tür tauschst, oder ob du fest bei deiner Entscheidung bleibst und die gewählte Tür behälst.


Am Ende landest du immer bei genau zwei Türen.
- entweder du behälst die Tür und gewinnst,
- du behälst die Tür und verlierst,
- du wechselst die Tür und gewinnst
- oder du wechselst und verlierst

2x gewinnen und 2x verlieren = 50:50



Aber, bei der Beurteilung des Ergebnisses, kommt es ebenfalls auf deinen Verstand, bzw. eher auf deine Gefühle drauf an.

Ärgert man sich mehr, wenn man gewechselt hat und sich dann fragt "Warum bist du nur so ein schwaches Weichei und hast nachgegeben?",
bzw. das beliebtere "Du Trottel, warum hast du getauscht? Du hattest den Gewinn doch shon in der Hand!"

oder ob dich das "Warum bist du nur so stur und hast nicht gewechselt? Der Typ hatte dir doch gesagt, daß du falsch liegst.".




Wer das gern per Programm nachprüffen will:

- Entweder mit einem ordentlichem Zufallsgenerator oft genug den Prozess durchlaufen lassen und zählen.
> gewonnen / verloren
> oder etwas detailierter: gewonnen+standhaft / zufälligGewonnen+beinflussbar / verloren+unnachgiebigerTrottel / verloren+weichei

- oder man geht mal schnell alle möglichen Varianten durch und zählt da ebenfalls mit.
Delphi-Quellcode:
for DieErsteTorWahl := 1 to 3 do
  for NachgebenUndTauschen := False to True do begin
    ...
  end;



PS: Selbst wenn man extrem beinflusbar oder extrem standhaft ist, es bleibt dennoch bei 50:50,
da jeweil die anderen Möglichkeiten wegfallen.

- entweder du behälst die Tür und gewinnst
- oder du behälst die Tür und verlierst

oder

- entweder du wechselst die Tür und gewinnst
- oder du wechselst und verlierst



Und falls man sich z.B. nur zu durchschnittlich 80% beeinflussen und zum Wechsel drängen lässt, dann bleibt es immernoch 50:50,
da 40:40 + 10:10 = 50:50 .

Popov 6. Mär 2014 00:01

AW: Ziegenproblem
 
@jfheins

Ich hab es schon beim ersten Mal verstanden, bzw. schon früher. Nur wie ich schon sagte, mathematisch ist das korrekt, das habe ich nie bezweifelt. Sieh dir mal das Programm an.

Sir Rufo 6. Mär 2014 00:05

AW: Ziegenproblem
 
@jfheins

Ich wähle immer irgendein Tor (es ist mir zu dem Zeitpunkt egal und würde es auch von der Sockenfarbe des Moderators abhängig machen rot=1, schwarz=2, sonst=3) und erst wenn nur noch 2 Tore zur Auswahl stehen dann wähle ich bewusst.

Das klingt eher nach 50:50

Nein, einen mathematischen Beweis kann ich nicht bringen, sondern nur diese Alternativbetrachtung.

himitsu 6. Mär 2014 00:20

AW: Ziegenproblem
 
Wer dachte auch, daß das noch kommen musste?
Mal ausrechnen, wie oft da mit Ja geantwortet wird.

http://www.youtube.com/watch?v=j9Au3g4bBL4

Namenloser 6. Mär 2014 00:26

AW: Ziegenproblem
 
Nicht immer, wenn zwischen zwei Dingen eine Auswahl besteht, ist die Chance auch 50% ;)

Die erste Auswahl ist tatsächlich sinnlos, man kann auch immer die erste Tür wählen, es ist egal, solange die Ziegen zufällig verteilt sind.

Fakt ist, wenn man die Auswahl nicht ändert, hat man eine Chance von 1/3. Ändert man die Wahl, hat man eine Chance von 2/3. Somit ist das natürlich nicht wirklich eine Wahl, da man immer wechselt (sofern einem das klar ist).

Wer es nicht glaubt, kann sich ja mal eine Tabelle mit allen möglichen Startkonfigurationen machen: Das ergibt eine 3×3-Tabelle (Position des Autos × zufällig ausgewählte Tür). Dann einfach mal durchzählen, wie oft man gewinnt, wenn man die Wahl ändert, und wie oft, wenn man sie nicht ändert. Ergibt ein Verhältnis von 2:1, und nicht 50:50.

BUG 6. Mär 2014 00:27

AW: Ziegenproblem
 
Nochmal in kurz:
Die Wahrscheinlichkeit bei der ersten Runde richtig zu liegen ist 1/3.
Mit dem Wechseln gewinnst du immer, wenn du bei der ersten Runde falsch lagst: 1 - 1/3 = 2/3.

Dieses Problem ist nicht umsonst so bekannt. Selbst wenn man die richtige Lösung kennt, neigt man intuitiv zur falschen Annahme.

Jumpy 6. Mär 2014 08:15

AW: Ziegenproblem
 
Das Problem mit der ganzen Theorie ist, dass man das in der Praxis kaum anwenden kann. Denn wer spielt schon regelmäßig in so einer Spielshow mit die es nicht mehr gibt?

Viel interessanter wäre es zu wissen, an welche Kasse ich mich das nächste mal im Supermarkt anstelle, denn irgendwie scheine ich immer die zu nehmen, bei der es am längsten dauert bis ich dran bin. Und wenn ich das erkenne und an die Kasse wechsel, an der ich nur noch eine Person vor mir habe, so ist das eine (wo es doch um Mathe geht: OBDA) Oma der im Moment des Bezahlens das Geld runterfällt oder die die Pinnummer ihrer Karte vergessen hat, oder, oder, oder

Somit wird das Ziegenproblem der Theorie zu Murphy's Gesetz in der Realität :-D

Furtbichler 6. Mär 2014 09:57

AW: Ziegenproblem
 
Zitat:

Zitat von Jumpy (Beitrag 1250857)
Das Problem mit der ganzen Theorie ist, dass man das in der Praxis kaum anwenden kann.

Ohhh doch. Du gehst in eine Disco (oder zum Bingo bzw. Rollatorfußball, je nach Alter) und siehst drei Frauen/Greisinnen/Skelette und suchst Dir eine aus, zum naduweisstschon. Nun kommt dein Kumpel/der Altenpfleger, und erzählt dir von einer der beiden Anderen, was die noch so mit dir anstellen kann. Would you stick to your first choice?

Back2Code 6. Mär 2014 10:18

AW: Ziegenproblem
 
Zitat:

Zitat von Furtbichler (Beitrag 1250880)
Zitat:

Zitat von Jumpy (Beitrag 1250857)
Das Problem mit der ganzen Theorie ist, dass man das in der Praxis kaum anwenden kann.

Ohhh doch. Du gehst in eine Disco (oder zum Bingo bzw. Rollatorfußball, je nach Alter) und siehst drei Frauen/Greisinnen/Skelette und suchst Dir eine aus, zum naduweisstschon. Nun kommt dein Kumpel/der Altenpfleger, und erzählt dir von einer der beiden Anderen, was die noch so mit dir anstellen kann. Would you stick to your first choice?

Was genau meinst du mit "naduweisstschon"? :-D

Furtbichler 6. Mär 2014 10:43

AW: Ziegenproblem
 
Zitat:

Zitat von Back2Code (Beitrag 1250886)
Was genau meinst du mit "naduweisstschon"? :-D

:roll:

p80286 6. Mär 2014 10:47

AW: Ziegenproblem
 
Na Dame spielen, was sonst!

Gruß
K-H

Popov 6. Mär 2014 11:43

AW: Ziegenproblem
 
Um bei Furtbichlers Beispiel zu bleiben: Du gehst in eine Disco (oder zum Bingo bzw. Rollatorfußball, je nach Alter) und siehst drei wunderschöne Frauen - eine Blondine, ein Rothaarige und eine Brünette. Du sprichst die Blondine an. Daraufhin steht die Brünette auf und geht weg, vorher aber sagt sie dir ins Ohr, dass sie und eine weitere von den Beiden sich den Tripper eingefangen haben, sagt aber nicht welche. Du bis risikofreudig, willst es riskieren, wechselst nun zu der Rothaarigen, weil die zu 2/3 keinen Tripper hat?

TForm1 6. Mär 2014 18:30

AW: Ziegenproblem
 
So, jetzt wollte ich es mal wissen und habe mir ein kleines Programm gebastelt.
Ich gehe davon aus, dass der Gewinn immer hinter dem 1. Tor versteckt ist. Wenn sich der Computer dann eines der Tore (zufällig) auswählt, hat er mehrere Möglichkeiten. In dem Fall, dass er das erste Tor erwischen sollte gibt es 2 Möglichkeiten: Wenn er sich umentscheidet verliert er, wenn nicht gewinnt er. Bei den beiden anderen Tore ist es genau andersherum. Entscheidet er sich um, gewinnt er; entscheidet er sich nicht um, verliert er. Das Ergebnis ist daher wenig überraschend.
Delphi-Quellcode:
Randomize;
  zaehler1a:= 0;//zählt die Siege mit Umentscheidung
  zaehler1b:= 0;//verloren mit Umentscheidung
  zaehler2a:= 0;//Sieg ohne Umentscheidung
  zaehler2b:= 0;//verloren ohne Umentscheidung
  for i:=1 to MAX do//MAX ist in dem Fall 1000
  begin
    auswahl1:=random(3);
    case auswahl1 of //Erste Auswahl aus 3 Toren
      0: begin
           auswahl2:=random(2); //Auswahl, ob Umentscheiden oder nicht
           if auswahl2 = 0 then zaehler1b:= zaehler1b+1 else zaehler2a:= zaehler2a+1;
         end;
      1: begin
           auswahl2:= random(2);
           if auswahl2 = 0 then zaehler1a:= zaehler1a+1 else zaehler2b:= zaehler2b+1;
         end;
      2: begin
           auswahl2:= random(2);
           if auswahl2 = 0 then zaehler1a:= zaehler1a+1 else zaehler2b:= zaehler2b+1;
         end;
    end;
  end;
 writeln('Siege mit Umentscheidung:'+IntToStr(zaehler1a));
 writeln('Verloren mit Umentscheidung:'+IntToStr(zaehler1b));
 writeln('Siege ohne Umentscheidung:'+IntToStr(zaehler2a));
 writeln('Verloren ohne Umentscheidung'+IntToStr(zaehler2b));
Ergebnis:
Siege mit Umentscheidung:318
Verloren mit Umentscheidung:166
Siege ohne Umentscheidung:185
Verloren ohne Umentscheidung331
Das ist jetzt zwar nur eine Simulation ohne das Öffnen der Tore, da es ja nur die vorgegebenen Möglichkeiten gibt, aber im "richtigen" Spiel würde das Ergebnis auch nicht anders ausfallen.

Wenn es jetzt wirklich drauf ankommt bei nur 3 Toren, ob man sich nun anders entscheidet oder nicht, bleibt jedem selbst überlassen, ich würde mich auf jeden Fall umentscheiden:wink:

Popov 6. Mär 2014 18:56

AW: Ziegenproblem
 
Das Problem ist, dass es meiner Meinung nach mathematisch richtig ist, aber nicht praktisch.

Tor: 1/0/0 (hinter Tor 1 ist der Preis)

Wahl Tor 1
1 Treffer bei kein Wechsel
0 Treffer bei Wechsel

Wahl Tor 2
0 Treffer bei kein Wechsel
1 Treffer bei Wechsel

Wahl Tor 3
0 Treffer bei kein Wechsel
1 Treffer bei Wechsel

Ist der Preis stets hinter Tor 1 und man hat 3 Versuche, dann stimmt die Aussage, dass man bei keinem Wechsel nur die 1/3 Chance hat und beim Wechsel 2/3 Chance. Dazu muss man aber drei Versuche haben, also drei Versuche für nicht wechseln und drei Versuche für Wechseln.

In der Praxis hat man aber immer nur ein Versuch. Und da greift meiner Meinung nach die Rechnung nicht.

Stevie 6. Mär 2014 19:14

AW: Ziegenproblem
 
Zitat:

Zitat von 0x92 (Beitrag 1250759)
Es geht auf die Spielshow Let's Make a Deal zurück, eine Art amerikanische Variante von Wetten, dass...

"Geh aufs Ganze!" und nicht "Wetten, dass..." :wink:

Namenloser 6. Mär 2014 19:46

AW: Ziegenproblem
 
Zitat:

Zitat von Popov (Beitrag 1250983)
Ist der Preis stets hinter Tor 1 und man hat 3 Versuche, dann stimmt die Aussage, dass man bei keinem Wechsel nur die 1/3 Chance hat und beim Wechsel 2/3 Chance. Dazu muss man aber drei Versuche haben, also drei Versuche für nicht wechseln und drei Versuche für Wechseln.

In der Praxis hat man aber immer nur ein Versuch. Und da greift meiner Meinung nach die Rechnung nicht.

Ich verstehe, was du meinst, aber es ist trotzdem ein Denkfehler. Die Wahrscheinlichkeit hängt nicht davon ab, wie oft man einen Versuch durchführt. Je häufiger man den Versuch durchführt, desto stärker nähert sich das empirische Ergebnis dem Erwartungswert an. Aber trotzdem ist die Wahrscheinlichkeit auch schon bei einem einzigen Versuch exakt dieselbe.

Mal ein anderes Beispiel: Du wirfst (einmalig) einen Würfel und gewinnst genau dann, wenn du die 6 würfelst. Die Gewinnwahrscheinlichkeit ist also offensichtlich 1/6. Nach deiner Argumentation würde ich jetzt sagen: Es gibt genau zwei mögliche Ausgänge – entweder, die gewürfelte Zahl ist die 6, oder die gewürfelte Zahl ist nicht die 6 – also zwei mögliche Ausgänge, das macht 50:50 Wahrscheinlichkeit.

Das steht offensichtlich im Widerspruch sowohl zur Mathematik als auch zur Beobachtung.

himitsu 6. Mär 2014 23:34

AW: Ziegenproblem
 
Liste der Anhänge anzeigen (Anzahl: 2)
Egal was ich ausrechne, die "reale" Gewinnchance liegt immer bei 50:50. (man suche sich irgendeine Tür aus und dann wechsle man oder auch nicht)
Dabei ist es egal, ob man das Tor tauscht oder nicht.

Aber "gefühlt" liegt die Gewinnchance geringer, mit ihren 42:58 (gewinn:verlust),
wobei es bei 50:50 liegt, wenn man das Tor wechselt, und bei 33:66, wenn man das erste Tor behällt. :stupid:

Grund:
Wenn man zu Anfang auf einem Tor mit Ziege steht, dann denkt man dennoch, daß sich hinter den beiden restlichen Toren je eine Ziege befinden könnte.
Der Moderator könnte also eine von beiden Türen öffnen. Aber da sich ja hinter Einer der Preis befindet, hat dort der Moderator keine 50:50-Auswahl, sondern er kann eben nur das eine Tor öffnen.
Es gibt also nur halb soviele Lösungen, wie man sich denkt, wenn man von Anfang an eine Tür mit Ziege gewählt hatte.

ich gewinne letztendlich - der Moderator wählt die eine Tür und ich bleib bei meiner Tür
ich gewinne letztendlich - der Moderator wählt die eine Tür und ich wähle darauf die andere Tür
ich gewinne letztendlich - der Moderator wählt die andere Tür und ich bleib bei meiner Tür
ich gewinne letztendlich - der Moderator wählt die andere Tür und ich wähle darauf auch die andere Tür
ich bin voll der Looser - der Moderator wählt die eine Tür und ich bleib bei meiner Tür
ich bin voll der Looser - der Moderator wählt die eine Tür und ich wähle darauf die andere Tür
ich bin voll der Looser - der Moderator wählt die andere Tür und ich bleib bei meiner Tür
ich bin voll der Looser - der Moderator wählt die andere Tür und ich wähle darauf auch die andere Tür






[edit]
Der große Witz ist aber, daß selbst wenn mann zu Anfang sich immer nur ein Tor auswählt (z.B. die 1),
dann hätte ich gedacht, daß dann die Gewinnchance bei 1:3 liegt, aber sie liegt dennoch bei 50:50. :shock:
Egal ob man danach die Tür wechselt oder auch nicht, es bleibt bei je 50:50.

Hab ich mich da jetzt doch verrechnet?
Gefühlt sind es natürlich immernoch die 33:66, wenn man fest bei seinem ersten Tor bleibt.
Glaub aber nicht, denn eigentlich hat man nur die Wahl zwischen "Richtig" (Gewinn) und "Falsch" (einer Ziege).

Das ist ja wie mit dem Doppelspalt in der Quantenphysik.
- wenn man hinguckt, ist es ein Partikel
- und eine Welle, wenn man nicht hinguckt

Eins von 3 Toren = 33:67,
aber wenn man sich zwischendurch eine Tür anguckt, werden es plöztlich 50:50.

Namenloser 7. Mär 2014 00:21

AW: Ziegenproblem
 
Zitat:

Zitat von himitsu (Beitrag 1251019)
Grund:
Wenn man zu Anfang auf einem Tor mit Ziege steht, dann denkt man dennoch, daß sich hinter den beiden restlichen Toren je eine Ziege befinden könnte.
Der Moderator könnte also eine von beiden Türen öffnen. Aber da sich ja hinter Einer der Preis befindet, hat dort der Moderator keine 50:50-Auswahl, sondern er kann eben nur das eine Tor öffnen.
Es gibt also nur halb soviele Lösungen, wie man sich denkt, wenn man von Anfang an eine Tür mit Ziege gewählt hatte.

ich gewinne letztendlich - der Moderator wählt die eine Tür und ich bleib bei meiner Tür
ich gewinne letztendlich - der Moderator wählt die eine Tür und ich wähle darauf die andere Tür
ich gewinne letztendlich - der Moderator wählt die andere Tür und ich bleib bei meiner Tür
ich gewinne letztendlich - der Moderator wählt die andere Tür und ich wähle darauf auch die andere Tür
ich bin voll der Looser - der Moderator wählt die eine Tür und ich bleib bei meiner Tür
ich bin voll der Looser - der Moderator wählt die eine Tür und ich wähle darauf die andere Tür
ich bin voll der Looser - der Moderator wählt die andere Tür und ich bleib bei meiner Tür
ich bin voll der Looser - der Moderator wählt die andere Tür und ich wähle darauf auch die andere Tür

Diese Ereignisse sind aber nicht gleich wahrscheinlich, da liegt dein Fehler.

Und btw, „Loser“ schreibt man mit nur einem „o“ (das gleiche gilt für das zugehörige Verb).

Amateurprofi 7. Mär 2014 03:15

AW: Ziegenproblem
 
@himitsu:
Ich denke du gehst das Problem viel zu kompliziert an.
Du wählst ein Tor und mit einer Wahrscheinlichkeit von 1/3 steht dahinter das Auto und mit einer Wahrscheinlichkeit von 2/3 eine Ziege.

Wenn du also bei deiner ursprünglichen Wahl bleibst, dann ist Deine Chance zu gewinnen 1/3.
Folglicherweise, wenn du wechselst, ist Deine Chance zu gewinnen 2/3.

Stell Dir das Spiel, etwas modifiziert so vor.
1) Du wählst am Anfang ein Tor.
2) Dann fragt der Moderator, ob Du nicht lieber die beiden anderen Tore haben möchtest.
Im Prinzip ist dies genau das, was abläuft.

Das ganze wird übrigens in dem im Artikel erwähnten Buch ("Das Ziegenproblem" von Gero von Randow, ISBN 3-499-19337-X) ausführlich und anschaulich beschrieben.

himitsu 7. Mär 2014 08:37

AW: Ziegenproblem
 
Hmmmmmm, die äußeren Schleifen einfach gegen Zufallswerte ausgetauscht und nun kommt doch 2:3 raus, wenn man wechselt.
Außerdem die 1:3, wenn man nicht wechselt und 50:50, wenn man zufällig mal wechselt und mal wieder nicht.

Delphi-Quellcode:
  Randomize;
  for Count := 0 to 50000 do begin
    NoGoat   := Random(3) + 1;
    FirstDoor := Random(3) + 1;
    Change   := Boolean(Random(2));
    if FirstDoor = NoGoat then
      OpenSecond := Boolean(Random(2))
    else
      OpenSecond := False;

    ...

  end;

Blup 7. Mär 2014 09:27

AW: Ziegenproblem
 
Noch ein Versuch der Erklärung, damit auch der letzte es versteht:

Jeder Fall hatt bei 3 Toren 1/3 Wahrscheinlichkeit einzutreten.
Code:
Tor     A B C
Fall 1: X Z Z
Fall 2: Z X Z
Fall 3: Z Z X
Der Kandidat wählt z.B. Tor A und hat damit 1/3 Wahrscheinlichkeit zu gewinnen.
Die beiden anderen Tore jeweils ebenso.
Streicht der Moderator jetzt immer genau ein ungültiges Tor, das nicht gewählt wurde, sieht das Zwischenergebnis so aus:
Code:
Tor     A (B or C)
Fall 1: X    Z
Fall 2: Z    X
Fall 3: Z    X
Die Wahrscheinlichkeit für Tor A ändert sich nicht, die Wahscheinlichkeit für die Tore B oder C hat sich jetzt aber auf ein Tor konzentriert.

Popov 7. Mär 2014 11:47

AW: Ziegenproblem
 
Das ist schon richtig, wenn bestimmte Bedingungen vorliegen. Geht man davon aus, dass es drei Tore gibt und ein leeres wird geöffnet, ist es ein Geschenk. Nun hat man eine 2/3 Chance (eben das neue Tor plus das geschenkte Tor des Spielleiters). Das sind zwei Tore die man hat. Auf drei Tore betrachtet macht das 2/3.

Nur stellt sich aber die Frage ob sich die Chance auf den Gewinn steigert wenn man wechselt? Oder erhöhte sich die Wahrscheinlichkeit richtig zu liegen auf 2/3. Denn selbst wenn man nicht wechselt hat man eben das eigene Tor und das des Spielleiters. Auch 2/3.

wolfgang_SV 7. Mär 2014 11:57

AW: Ziegenproblem
 
Antwort:

Wählt der Kandidat zuerst die Gewinntür (Wahrscheinlichkeit p = 1/3), so verliert er bei Änderung seiner Auswahl.
Steht aber hinter der anfangs gewählten Tür eine Ziege (p = 2/3), dann ist der Wechsel zur verbleibenden Tür stets erfolgreich.
Die Gewinnchance bei einem Türwechsel beträgt somit 2/3, andernfalls 1/3.

himitsu 7. Mär 2014 11:57

AW: Ziegenproblem
 
Zitat:

Zitat von Popov (Beitrag 1251100)
Nur stellt sich aber die Frage ob sich die Chance auf den Gewinn steigert wenn man wechselt? Oder erhöhte sich die Wahrscheinlichkeit richtig zu liegen auf 2/3. Denn selbst wenn man nicht wechselt hat man eben das eigene Tor und das des Spielleiters. Auch 2/3.


Siehe Antwort #34.

jobo 7. Mär 2014 12:04

AW: Ziegenproblem
 
Schon 4 Seiten! Ziegenprobleme werden offenbar überbewertet. Persönlich würde ich sie eher den Win-Zigen Problemen zuordnen.

Ach ja und falls es noch niemand geschrieben hat (ich hab nicht alles gelesen).
Es ist 50:50 weil nach der Auswahl des Moderators die Wahl zwischen 2 Toren übrig bleibt. Eine innerliche Vorwahl spielt dabei keine Rolle.

Spannend ist das ganze doch erst, wenn hinter der Moderatortür ein 2.Gewinn wartet, so wie es später auch in den Shows war. Und wenn man sehen kann, dass hinter den Toren nicht David Cooperfield dem Wagen umparkt usw usw.

p80286 7. Mär 2014 12:47

AW: Ziegenproblem
 
Zitat:

Zitat von jobo (Beitrag 1251103)
Ach ja und falls es noch niemand geschrieben hat (ich hab nicht alles gelesen).
Es ist 50:50 weil nach der Auswahl des Moderators die Wahl zwischen 2 Toren übrig bleibt. Eine innerliche Vorwahl spielt dabei keine Rolle.

und ich dachte schon ich hätte etwas nicht verstanden!

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:54 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz