# Monte Carlo simulation in R for Monty Hall problem not working?

1 view

I'm writing a function in R to perform a Monte Carlo simulation for the Monty Hall problem. The function is working when the doors are not switched it switch == FALSE, but when I call mean(replicate(10000, monty_hall(switch = TRUE))), the expected answer is about 0.66 but I actually get around 0.25.

Here is the code to the function:

monty_hall = function(switch = logical()){

doors <- c(1,2,3)

names(doors) <- rep(c("goat", "car"), c(2,1))

prize_door <- doors

guess <- sample(doors, 1)

revealed_door <- sample(doors[!doors %in% c(guess, prize_door)],1)

if(switch){

switched_door <- sample(doors[!doors %in% c(guess, revealed_door)],1)

prize_door == switched_door

} else {

prize_door == guess

}

}

What changes should I make to get the correct output, which is around 0.66?

by (39.1k points)

You just need to change doors vector to characters in order to get the correct output.

monty_hall = function(switch = logical()){

doors <- c("1","2","3")

names(doors) <- rep(c("goat", "car"), c(2,1))

prize_door <- doors

guess <- sample(doors, 1)

revealed_door <- sample(doors[!doors %in% c(guess, prize_door)],1)

if(switch){

switched_door <- sample(doors[!doors %in% c(guess, revealed_door)],1)

prize_door == switched_door

} else {

prize_door == guess

}

}

If You wish to learn What is R Programming visit this R Programming Course.