0
假設我想在Python中模擬一個經典問題:有一個包含55%紅色球和45%綠色球的包。Monte Carlo模擬過程中random.sample函數的意外行爲
我想提取10個球,並檢測所有這些球是綠色的可能性是什麼。
我用蒙特卡羅模擬,使用功能random.sample(球10)所示:
from random import choice, shuffle, sample, randint
Red = False
Green = True
bags = [Red for _ in range(55)]
bags.extend([Green for _ in range(45)])
# shuffle(bags)
def testonce():
return all(sample(bags, 10))
def test(N):
K = 0
for _ in xrange(N): K += testonce()
return float(K)/N
print '/', test (10000000)
print ':', .45**10
此代碼打印由模擬檢測到的概率,真正的概率(正確答案) 。它打印這樣:
/ 0.0001848
: 0.00034050628916
這種差異表明我
要麼隨機模塊是錯誤的
任我錯過了什麼,以及做一些錯誤的代碼。
我怎麼錯過?如何正確地編寫模擬,例如當N增長時,返回的數字收斂到真正的概率?
啊!我想你是對的 :)。大聲笑。我沒有注意到。我現在會嘗試。 – alinsoar
對!解決了 。謝謝 ! – alinsoar