home *** CD-ROM | disk | FTP | other *** search
- PROGRAM pegasau;
-
- (* Gegeben sind drei Türen. Hinter zwei Türen befinden sich zwei
- Ziegen, hinter einer Tür ein Auto. Man wählt eine Tür. Danach wird
- eine Tür geöffnet (die man natürlich nicht gewählt hat), hinter
- der eine Ziege ist. Danach wir behauptet, daß die Wahrscheinlichkeit,
- daß man das Auto findet, sich verdoppelt, wenn man sich umentscheidet,
- also die andere geschlossene Tür wählt.
- Das Programm erechnet die Wahrscheinlichkeit dafür.
- Bleibt man bei seiner Wahl, ist die Wahrscheinlichkeit natürlich 1/3 *)
-
- CONST nummer=3;
- anzahl=100000;
-
- VAR k, j, wahl1, wahl2, offen : INTEGER;
- tuer : ARRAY[1..3] OF INTEGER;
- verh : REAL;
- counter, richtig : longint;
-
- BEGIN
- offen:=0;
- wahl2:=0;
- richtig:=0;
- FOR counter:=1 TO anzahl DO
- BEGIN
- FOR j:=1 TO 3 DO tuer[j]:=0; (* Inhalt der Türen wird gelöscht *)
- j:=RANDOM(nummer)+1; (* Zufallszahl für Tür *)
- tuer[j]:=1; (* hinter der das Auto versteckt ist *)
- wahl1:=RANDOM(nummer)+1; (* Erste Wahl *)
- FOR k:=1 TO 3 DO
- BEGIN
- IF (k<>j) AND (k<>wahl1) THEN
- offen:=k; (* Jetzt wird ein Tür geöffnet, *)
- END; (* die nicht gewählt wurde und hinter *)
- (* der das Auto nicht ist. *)
-
- FOR k:=1 TO 3 DO
- BEGIN
- IF (k<>wahl1) AND (k<>offen) THEN
- wahl2:=k; (* Jetzt wird umentschieden auf die andere Tür *)
- END; (* die noch zu ist. *)
-
- IF wahl2=j THEN (* Auto gefunden *)
- richtig:=richtig+1;
- END;
- verh:=richtig /anzahl;
- WRITELN('Wahrscheinlichkeit für Treffer nach Umentscheiden ist :',verh:2:8);
- WRITELN('Drücke Taste...');
- REPEAT UNTIL KEYPRESSED;
- END.