AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ziegenproblem

Ein Thema von 0x92 · begonnen am 5. Mär 2014 · letzter Beitrag vom 9. Mär 2014
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.719 Beiträge
 
Delphi 12 Athens
 
#1

AW: Ziegenproblem

  Alt 5. Mär 2014, 16:06
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".
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 5. Mär 2014 um 16:11 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von 0x92
0x92

Registriert seit: 14. Feb 2014
6 Beiträge
 
#2

AW: Ziegenproblem

  Alt 5. Mär 2014, 16:08
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
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#3

AW: Ziegenproblem

  Alt 5. Mär 2014, 19:43
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.
  Mit Zitat antworten Zitat
TForm1

Registriert seit: 11. Jan 2014
128 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Ziegenproblem

  Alt 5. Mär 2014, 20:05
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.
Der Fehler sitzt immer vor dem Computer...
  Mit Zitat antworten Zitat
Mikkey

Registriert seit: 5. Aug 2013
265 Beiträge
 
#5

AW: Ziegenproblem

  Alt 5. Mär 2014, 20:11
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
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#6

AW: Ziegenproblem

  Alt 5. Mär 2014, 20:50
@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.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#7

AW: Ziegenproblem

  Alt 5. Mär 2014, 21:46
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.
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#8

AW: Ziegenproblem

  Alt 5. Mär 2014, 22:38
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
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#9

AW: Ziegenproblem

  Alt 5. Mär 2014, 22:43
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.
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#10

AW: Ziegenproblem

  Alt 5. Mär 2014, 23:33
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz