PROGRAM pegasau;

(* Gegeben sind drei Tren. Hinter zwei Tren befinden sich zwei
	Ziegen, hinter einer Tr ein Auto. Man w„hlt eine Tr. Danach wird 
	eine Tr ge”ffnet (die man natrlich 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 Tr w„hlt.
	Das Programm erechnet die Wahrscheinlichkeit dafr.
	Bleibt man bei seiner Wahl, ist die Wahrscheinlichkeit natrlich 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 Tren wird gel”scht *)
		j:=RANDOM(nummer)+1; 			(* Zufallszahl fr Tr *)
		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 Tr 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 Tr *)
		END;					(* die noch zu ist. *)

		IF wahl2=j THEN 	(* Auto gefunden *)
			richtig:=richtig+1;
	END;
	verh:=richtig /anzahl;
	WRITELN('Wahrscheinlichkeit fr Treffer nach Umentscheiden ist :',verh:2:8);
	WRITELN('Drcke Taste...');
	REPEAT UNTIL KEYPRESSED;
END.