擅长:python、mysql、java
<p>您的解决方案很好,但是如果您希望对所提出的问题进行更严格的模拟(以及更高质量的Python;-),请尝试:</p>
<pre><code>import random
iterations = 100000
doors = ["goat"] * 2 + ["car"]
change_wins = 0
change_loses = 0
for i in xrange(iterations):
random.shuffle(doors)
# you pick door n:
n = random.randrange(3)
# monty picks door k, k!=n and doors[k]!="car"
sequence = range(3)
random.shuffle(sequence)
for k in sequence:
if k == n or doors[k] == "car":
continue
# now if you change, you lose iff doors[n]=="car"
if doors[n] == "car":
change_loses += 1
else:
change_wins += 1
print "Changing has %s wins and %s losses" % (change_wins, change_loses)
perc = (100.0 * change_wins) / (change_wins + change_loses)
print "IOW, by changing you win %.1f%% of the time" % perc
</code></pre>
<p>典型的输出是:</p>
<pre><code>Changing has 66721 wins and 33279 losses
IOW, by changing you win 66.7% of the time
</code></pre>