Monty Hall problem: Difference between revisions
Content added Content deleted
(Added Modula-2.) |
(→{{header|BASIC}}: Added ANSI BASIC.) |
||
Line 542: | Line 542: | ||
Staying wins 10963 times.</pre> |
Staying wins 10963 times.</pre> |
||
=={{header|ANSI BASIC}}== |
|||
{{trans|XPL0}} |
|||
{{works with|Decimal BASIC}} |
|||
<syntaxhighlight lang="basic"> |
|||
PROGRAM MontyHallProblem |
|||
DEF NGames = 10000 |
|||
RANDOMIZE |
|||
LET NWins = 0 |
|||
FOR Game = 0 TO NGames |
|||
IF IsGameWon(0) <> 0 THEN LET NWins = NWins + 1 |
|||
NEXT Game |
|||
PRINT "NOT switching doors wins car in "; |
|||
PRINT USING "##.#": NWins / NGames * 100; |
|||
PRINT "% of games." |
|||
LET NWins = 0 |
|||
FOR Game = 0 TO NGames |
|||
IF IsGameWon(1) <> 0 THEN LET NWins = NWins + 1 |
|||
NEXT Game |
|||
PRINT "But switching doors wins car in "; |
|||
PRINT USING "##.#": NWins / NGames * 100; |
|||
PRINT "% of games." |
|||
END |
|||
REM *** |
|||
EXTERNAL FUNCTION IsGameWon(Sw) |
|||
REM Play one game. |
|||
REM Switching if and only if Sw <> 0. |
|||
REM Returns 1 if the game is won, 0 otherwise. |
|||
LET Car = INT(RND * 3) ! Randomly place car behind a door. |
|||
LET Player0 = INT(RND * 3) ! Player randomly chooses a door. |
|||
DO |
|||
LET Monty = INT(RND * 3) ! Monty opens door revealing a goat. |
|||
LOOP UNTIL (Monty <> Car) AND (Monty <> Player0) |
|||
IF Sw <> 0 THEN ! Player switches TO remaining door. |
|||
DO |
|||
LET Player = INT(RND * 3) |
|||
LOOP UNTIL (Player <> Player0) AND (Player <> Monty) |
|||
ELSE |
|||
LET Player = Player0 ! Player sticks with original door. |
|||
END IF |
|||
IF Player = Car THEN |
|||
LET IsGameWon = 1 |
|||
ELSE |
|||
LET IsGameWon = 0 |
|||
END IF |
|||
END FUNCTION |
|||
</syntaxhighlight> |
|||
{{out}}(example) |
|||
<pre> |
|||
NOT switching doors wins car in 32.3% of games. |
|||
But switching doors wins car in 67.3% of games. |
|||
</pre> |
|||
==={{header|BASIC256}}=== |
==={{header|BASIC256}}=== |
||
Line 641: | Line 693: | ||
END |
END |
||
</syntaxhighlight> |
</syntaxhighlight> |
||
=={{header|BBC BASIC}}== |
=={{header|BBC BASIC}}== |