條件期望是概率論中的一個非常有意思的知識點,但是在一些課程中并不涉及到,實在是遺憾。條件期望,顧名思義,就是條件分布的期望。除此之外呢,關于條件期望的另一個非常重要的知識點是重期望公式:條件期望的期望即是其本身。我們來看個關于條件期望的有趣例子吧~
一礦工被困在有三個門的礦井里,第一個門通一坑道,沿此坑道走3小時可到達安全區(qū);第二個門通一坑道,沿此坑道走5小時又回到原處;第三門通一坑道,沿此坑道走7小時又回到原處。假定此礦工每次都是等可能的在這三個坑道中選擇一個,試求他平均需要多少小時才能走出礦井。(茆詩松等,概率論與數(shù)理統(tǒng)計教程,高等教育出版社)
這個題目就是一個典型的條件期望的題目。
有關條件期望,有兩個最為關鍵與重要的知識點:條件期望公式與重期望公式
條件期望公式:
對于離散型隨機變量:
對于連續(xù)型隨機變量:
重期望公式:
求解
有了這些知識,我們就可以來求解這道題目了。
當然,我們知道,直接列出礦工走出礦井的分布列是不太現(xiàn)實的,誰知道這個倒霉的礦工最多可以被困在井下多久。
但是我們知道,每一次他選擇第i個坑道的可能性是相同的,即:
而選擇每一個坑道所需時間即為條件期望,因此:
而總時間的期望與這些條件期望之間存在什么關系呢?
這個公式化簡,可以求出:
意味著這個礦工平均要花15個小時才能走出坑道。換個角度理解,如果這個礦工不幸反復掉進這個礦井中,他平均要花15個小時才能走出坑道。世界上還有比這更加折磨人的事嘛!
模擬
當然,光有計算結果還是不夠的,現(xiàn)實中礦工可沒有那么多影分身,所以我們可以用Python來模擬一下。
話不多說,上代碼
import numpy as np
from matplotlib import pyplot as plt
from random import randint
iterations = 10000
x = np.arange(iterations)
y = np.zeros(iterations)
for i in range(iterations):
result = 0
while True:
pick = randint(1,3)
if pick == 1:
result += 3
break
elif pick == 2:
result += 5
else:
result += 7
y[i]=result
print(sum(y)/iterations)
plt.scatter(x,y, s=0.1, color = 'g', marker = 'o')
plt.xlabel("Times of iterations")
plt.ylabel("Total time")
plt.show()
這個礦工走出礦井所需時間的分布如下圖所示。模擬了10000次以后,我們可以發(fā)現(xiàn)這個礦工平均要花14.6小時才能走出坑道。如果他某一天運氣實在太背,最多可能要花上160多個小時。
這該死的命運呵。
