所以我正在模擬Python中的monty hall問題,並且我從Harvad Stats 111課程中獲得瞭解決方案。下面的功能應該顯示一個不是獎品門或猜門的門。但是,我對這兩個函數的功能是做什麼感到困惑。首先,bad.any()是做什麼的,爲什麼它是必要的。僅僅說「如果不壞」是不夠的。其次,最後一行到底是什麼。Monty Hall Python模擬
非常感謝
def goat_door(prizedoors, guesses):
#strategy: generate random answers, and
#keep updating until they satisfy the rule
#that they aren't a prizedoor or a guess
result = np.random.randint(0, 3, prizedoors.size)
while True:
bad = (result == prizedoors) | (result == guesses)
if not bad.any(): #DON'T UNDERSTAND THIS
return result
result[bad] = np.random.randint(0, 3, bad.sum()) #DON'T UNDERSTAND THIS
*「僅僅說'如果不壞'就足夠了」 - 試試看! – jonrsharpe
請注意,這是使用'numpy',並不是Python中的標準行爲;你不能僅僅將一個值與一個正常的迭代進行比較,並得到一個可迭代的結果。 – Sam
'如果不是bad.any()'則更易讀爲'if bad.all()'。也許編寫代碼的人認爲'not bad.any()'由於短路會更快,但這顯然是一種微型優化! – YXD