If the host picked at random and happened to get a goat, it is 1/2 vs 1/2. If the host picked a door he knew had a goat, it's 2/3 vs 1/3.
Again, write the simulation. It shouldn't take you 5 minutes.
The hidden assumption is that the odds that he opens a door containing a car is zero. That is what changes the odds in the second step. Without that they don't change.
Seriously. Write the simulation.
I understand what you were trying to ask but you worded the second question wrong. You can't tell the listener that the host picks a goat. That defeats the purpose of the "randomness" which is meaningless since we know the host picks a door with a goat.
car = wins = 0
many = 100000
actual = 0
many.times do
choice1 = rand(3)
car = rand(3)
#host_opts = [0, 1, 2] - [choice1, car] # host knows what is behind
host_opts = [0, 1, 2] - [choice1] # host doesn't know what is behind
#choice2 = [choice1] # don't switch
choice2 = [0, 1, 2] - [choice1, host_opts.first] # switch
if host_opts.first == car then
# Discard? Automatic win? It doesn't actually matter!
# It only changes the denominator.
else
# According to the puzzle, it is decision time!
wins += 1 if choice2.first == car
actual += 1
end
end
puts "#{(wins * 100) / actual}%"That is false 100% of the time given the parameters that the outcome of the host's choice is a goat (as the question states)
Edited to add:
I think there may be a different misunderstanding here...
Set aside, for the moment, whether the above implements the originally posed question or the variant. Imagine a gameshow that runs the above code, but the switch/stay code is moved below the "decision time!" line and the decision is made based on a prompt rather than hard coded. When you hit that prompt, "Monty" has already picked his door, and we've checked that it's not a car.
Do you expect your chance to win, on answering "switch" at that prompt, to depend on which line above is commented out?
Also, "it only changes the denominator" may be misleading, as it does not change the only denominator actually visible in the code. It changes the total numbers of wins and losses, but not the total numbers of wins and losses given that you saw a goat.
open_door = host_opts.sample
choice2 = [0, 1, 2] - [choice1, open_door] # switch
if open_door == car then
As for the denominator, good point.