|
|
|
|
|
by jayvanguard
4215 days ago
|
|
I found this on the internet and modified it so you can just change the commented out options to run it under the different scenarios. 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}%" |
|
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.