set.seed(123)
monty = function (n = 10000) {
doors = 1:3
# Replaces one door with the winning door
jackpot = sample(doors, n, replace = TRUE)
# Replaces one door with the players pick
pick = sample(doors, n, replace = TRUE)
# Simulates the host revealing the WRONG door
host = sapply(seq_len(n), function(i) {
sample(setdiff(doors, c(jackpot[i], pick[i])), 1)
})
# Determines what happens if the player switches
switch = mapply(function(p, h) setdiff(doors, c(p, h)), pick, host)
switch = sapply(switch, sample, 1)
# Calculate number of wins
stay_win = mean(pick == jackpot)
switch_win = mean(switch == jackpot)
data.frame(
Strategy = c("Stay", "Switch"),
WinRate = c(stay_win, switch_win)
)
}
monty_progress = function(n = 10000) {
doors = 1:3
jackpot = sample(doors, n, replace = TRUE)
pick = sample(doors, n, replace = TRUE)
host = sapply(seq_len(n), function(i) sample(setdiff(doors, c(jackpot[i], pick[i])), 1))
switch = mapply(function(p, h) setdiff(doors, c(p, h)), pick, host)
switch = sapply(switch, sample, 1)
stay_rate = cumsum(pick == jackpot) / seq_len(n)
switch_rate = cumsum(switch == jackpot) / seq_len(n)
data.frame(Game = 1:n, Stay = stay_rate, Switch = switch_rate)
}