python仿真入門-Simulation(1)
——用一個簡單的例子來開始
1.簡單問題
扔三枚硬幣,設在投擲3次朝上后,我們已經總計投擲了X次。求投擲六次以上的概率P(x>6)和期望E(X)。
2.數學求解
首先根據古典概率求解P(x>6):
P(x>6)=6+6∗5+6∗5∗426
得到解為:P(x>6)=0.6903
然后求解期望E(X)
E(X)=∑x=3∞x∗(x−1)∗(x−2)2x∗12
得到解為:E(X)=13.8844
3.python源碼
import random
r = random.Random(98765)
sumx = 0
count = 0
for rep in range(10000):
x = 0;
consechds = 0;
while True:
u = r.uniform(0.0,1.0)
if u < 0.5:
consechds += 1
else:
consechds = 0
x += 1
if consechds == 3:
break
if x > 6:
count += 1
sumx += x
print 'probability more than 6 tosses are needed =',count/10000.0
print 'mean number of tseees to get 3 consecutive head',sumx/10000.0
4.源碼理解
概念
可重復的實驗:通過for循環實現,10000次循環已達到可重復的實驗目的。
E(X):通過10000次實驗來求取均值
P(x>6):10000次實驗后x>6出現的情況除以總次數。
實驗細節
行16,調用庫函數uniform(),它可以產生[0,1)均勻分布的隨機號碼。如果產生大於0.5認為是正面,反之為反面。
在使用隨機數時使用了固定的庫(98765)