這篇文章略有不同,在這裏我們將做個數學題。許多人可能會自己解決,或在一些論壇上找到答案。我相信這是我們很多人真正喜歡的問題。因為,這個看似簡單的、基本的問題背後藴藏着深刻的數學哲理。
問題陳述我們玩以下游戲:
- 設S = 0。
- 從[0,1]區間均勻隨機地選取一個實數x。
- 設S = S + x。
- 如果S > 1,則停止,否則請執行步驟2。
我要澄清的是,上述步驟2中的每個隨機選擇都是獨立的。
現在的問題是:
我們所選擇的隨機數的期望數目是多少?換句話説,在過程終止之前,我們將執行步驟2的預期次數是多少?
我鼓勵所有的讀者在這裏停下來,花幾分鐘思考一下如何解決上面的問題。
一個簡單的計算實驗在深入研究這個問題的解決方案之前,我們或許可以先試着瞭解一下答案是什麼樣子的。由於所描述的過程非常簡單,我們可以很容易地對其進行編程。下面是這個問題的Python代碼:
import random
def PlayGame(n):
count = 0
for i in range(n):
S = 0.0
while S < 1:
S = S + random.uniform(0,1)
count = count + 1
return (count/n)
def main():
n = 1000000
res = PlayGame(n)
print("The expected number is " + str(res))
if __name__ == "__main__":
main()
運行代碼,我得到了一個答案:
解這個問題讓Y表示在執行過程中我們必須進行的選擇的期望數量。Y是一個取整數值的隨機變量。用期望的定義,我們有:
上面等式的右邊有一種很方便的重寫方法,就是這樣:
我們現在關注我們得到的最後一個雙求和並觀察它:
因此,我們得出結論:
換句話説,我們把原來的問題簡化為下面這個問題。
從[0,1]區間均勻隨機抽取的k個獨立實數的和不大於1的概率是多少?
為了回答上述問題,我們定義了以下集合,稱為(k-1)維單純形:
我們還定義了一個非常密切相關的集合,即:
為了瞭解為什麼上述集合是相關的,我們觀察以下內容。給定[0,1]區間內的k個隨機實數(實驗的每個可能結果),即每個實數k元組對應於單位超立方中的一個點,即:
由於我們是均勻隨機地抽取數字,一個事件發生的概率直接對應於實現該事件的超立方體中各點的體積。因此,我們可以寫:
因為 vol(Hᵏ)= 1。我們得出結論,剩下要計算的是集合Qᵏ的體積。下面的結果是一個眾所周知的定理。雖然它的證明很簡單,但為了使説明不那麼複雜,我們跳過它。
- 當k = 2時,上述定理對應於紅三角形的面積,其中包含所有加起來不超過1的數對。很容易看出,三角形的面積是單位正方形面積的一半,所以它是1/2 。
把所有東西放在一起,我們就得到了:
這對應於指數函數e^x的泰勒展開式,在x = 1處取值。對於每一個實數x:
代入x = 1,我們得到:
因此,我們原來的問題的答案是歐拉常數,e。
想了解更多精彩內容,快來關注老胡説科學