計算抛硬币出現連續10次正面朝上的機率的仿真實驗
- 前言
-
- 1.問題重述
- 2.問題分析
- 3.問題的求解
- 4.代碼
- 5.關于抛硬币的一點注釋
- 最後的一些話
前言
本人是大一剛入學沒多久的新生,第一次寫部落格可能某些方面不太好望大家多多諒解!您覺得寫得不好的地方,歡迎加大力度開口噴/滑稽~
1.問題重述
抛硬币100次,問出現10次連續正面朝上的機率為多少?
2.問題分析
針對問題,在python上大緻可以分為兩種方法實作:
1)仿真實驗
2)數學公式的遞歸計算
本文使用的是仿真實驗計算,仿真實驗的實驗次數越多,計算得到的結果越精準。
3.問題的求解
首先,記硬币的正面為1,反面為0,在python裡面引用random庫的randint()函數生成隻有一百萬個0或1的清單,然後使用for循環周遊清單,統計0或1重複出現的次數并進行累加,在循環語句中添加條件隻為正面,即清單的第i個元素是1且第i+1個元素也是1;在循環語句的最後再判斷這個重複出現的次數是否等于10,如果等于10,就累加給另外一個變量,最終将這個變量除于10000就可以得到抛硬币100次,出現10次連續正面朝上的機率。
4.代碼
import random as rd
row = [rd.randint(0,1) for i in range(1000000)]#緊湊格式的生成1000000個元素清單
a,sum1 = 1,0
for i in range(len(row)-1):
if row[i] == 1 and row[i] == row[i+1]:#判斷第i個元素是否為1且第i個跟第i+1個元素是否相同
a += 1
else:
a = 1
if a == 10:
sum1 += 1
print(sum1/10000)
5.關于抛硬币的一點注釋
首先關于最終輸出結果為什麼要除于10000,我們仿真實驗生成的是1000000個隻有0或1的清單,而問題是求抛硬币100次出現10次正面連續朝上的機率,是以這裡的1000000個元素的清單實際上10000次抛硬币100次的仿真結果。
最後的一些話
本人第一次寫部落格,某些地方不足請大家多多包涵,哪裡不足請大力提出意見,就算是祖安文科狀元也沒事,别滿腹金文憋在心中,這多委屈/滑稽,最後謝謝大家!