Data update
This commit is contained in:
parent
29a5eea0d4
commit
5c1bb7bfa9
2011 changed files with 35081 additions and 3229 deletions
58
Task/Monty-Hall-problem/Modula-2/monty-hall-problem.mod2
Normal file
58
Task/Monty-Hall-problem/Modula-2/monty-hall-problem.mod2
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
MODULE MontyHallProblem;
|
||||
|
||||
FROM STextIO IMPORT
|
||||
WriteLn, WriteString;
|
||||
FROM RandomNumbers IMPORT
|
||||
Randomize, Rnd;
|
||||
FROM SRealIO IMPORT
|
||||
WriteFixed;
|
||||
|
||||
CONST
|
||||
NGames = 10000; (* number of games simulated *)
|
||||
VAR
|
||||
NWins, Game: CARDINAL;
|
||||
|
||||
PROCEDURE IsGameWon(Sw: BOOLEAN): BOOLEAN;
|
||||
(* Play one game. *)
|
||||
VAR
|
||||
Car, Player, Player0, Monty: CARDINAL;
|
||||
BEGIN
|
||||
Car := Rnd(3); (* Randomly place car behind a door. *)
|
||||
Player0 := Rnd(3); (* Player randomly chooses a door. *)
|
||||
REPEAT
|
||||
Monty := Rnd(3); (* Monty opens door revealing a goat. *)
|
||||
UNTIL (Monty <> Car) AND (Monty <> Player0);
|
||||
IF Sw THEN
|
||||
(* Player switches to remaining door. *)
|
||||
REPEAT
|
||||
Player := Rnd(3);
|
||||
UNTIL (Player <> Player0) AND (Player <> Monty)
|
||||
ELSE
|
||||
Player := Player0 (* Player sticks with original door. *)
|
||||
END;
|
||||
RETURN (Player = Car);
|
||||
END IsGameWon;
|
||||
|
||||
BEGIN
|
||||
Randomize(0);
|
||||
NWins := 0;
|
||||
FOR Game := 0 TO NGames DO
|
||||
IF IsGameWon(FALSE) THEN
|
||||
NWins := NWins + 1
|
||||
END
|
||||
END;
|
||||
WriteString('NOT switching doors wins car in ');
|
||||
WriteFixed(FLOAT(NWins) / FLOAT(NGames) * 100.0, 1, 4);
|
||||
WriteString('% of games.');
|
||||
WriteLn;
|
||||
NWins := 0;
|
||||
FOR Game := 0 TO NGames DO
|
||||
IF IsGameWon(TRUE) THEN
|
||||
NWins := NWins + 1
|
||||
END
|
||||
END;
|
||||
WriteString('But switching doors wins car in ');
|
||||
WriteFixed(FLOAT(NWins) / FLOAT(NGames) * 100.0, 1, 4);
|
||||
WriteString('% of games.');
|
||||
WriteLn;
|
||||
END MontyHallProblem.
|
||||
Loading…
Add table
Add a link
Reference in a new issue