Maple What Are the Mistakes in This 4-Door Monty Hall Simulation Code in Maple?

  • Thread starter Thread starter fluffik
  • Start date Start date
  • Tags Tags
    Maple Monty hall
AI Thread Summary
The discussion centers on a user's difficulties in implementing a 4-door Monty Hall simulation in Maple. Key issues identified include incorrect variable initialization and the use of undefined variables like "switch1" and "switch2." The user is advised to ensure that the randomization function is correctly spelled as "randomize()" instead of "rendomize()". Additionally, there are concerns about how Monty's door choices are determined, which may not align with the rules of the Monty Hall problem. Overall, the thread highlights common coding mistakes in simulation setups and emphasizes the importance of adhering to logical rules in probabilistic scenarios.
fluffik
Messages
2
Reaction score
0
Hi, Iam a new user of Maple and having hard time to figure out what Iam doing wrong.
I need to set up Monty Hall simulation problem with 4 doors. Monty will open door twice and give opportunity to the player to switch the door or not. That's what I came up with. Could anyone point out my mistakes. Thank you

restart;
with(Statistics):
rendomize():
MontyHall:=proc(N::posint,{switch::truefalse:=false})
# Simulations for the 4-door Monty Hall problem.
N is the # of trials.
Returns the number of trials the player wins.
local
wins:=0,
Car,# the door with the Car behind it(1..4).
Montys1stDoor, # The door that Monty reveals first(1..4).
Montys2ndDoor, # The door that Monty reveals second(1..3).
Players1stDoor, # The door the player picks first.
Players2ndDoor, # The door the player picks second.
Players3rdDoor, # The door the player picks third.
Doors:={1,2,3,4};
switch:=switch1,switch2;
rand4:=rand(1..4),rand3:=rand(1..3),rand2:=rand(1..2);

to N do
Car:=rand4();
Players1stDoor:=rand4();
if Players1stDoor=Car then
Montys1stDoor:=(Doors minus{Car})[rand3()]
else
Montys1stDoor:=(Doors minus{Car,Players1stDoor})[]
end if;

if switch1 then
Players2ndDoor:=(Doors minus{Montys1stDoor,Players1stDoor})[rand2()]
else
Players2ndDoor:=Players1stDoor
end if;

if Players2ndDoor=Car then
Montys2ndDoor:=(Doors minus{Car,Montys1stDoor})[rand2()]
else
Montys2ndDoor:=(Doors minus{Car,Montys1stDoor,Players2ndDoor})[]
end if;

if switch2 then
Players3rdDoor:=(Doors-{Montys1stDoor,Montys2ndDoor,Players2ndDoor})[]
else
Players3rdDoor:=Players2ndDoor
end if;

if Players3rdDoor=Car then
wins:=wins+1;
end if
end do;
wins
end proc:
 
Physics news on Phys.org
Have you tried replacing rendomize() by randomize()?
 
Yes, thank you!
 
Back
Top