先用程序估算一下
from __future__ import division import random N = 1000000 sums = 0 for i in range(N): count = 0 s = 0 while 1: s += random.random() count += 1 if s > 1: sums += count break print sums / N
三次給出的結果分別是
2.716957 2.718334 2.71885
2.718不就是e的味道嗎,下面證明一下
先取兩個特例
特例1:x+y < 1——兩個隨機數之和小於1

結果是紫色部分,為1/2
特例2:x+y+z< 1——三個隨機數之和小於1

結果為深底下面的,占整個體積的1/6(錐體積:1/3*底面積*好=1/3 * 1/2 * 1 *1)
這個 1/6 可以利用截面與底面的相似比關系,通過簡單的積分求得:
∫(0..1) (x^2)*1/2 dx = 1/6
推廣:四個 0 到 1 之間的隨機數之和小於 1 的概率就等於四維立方體一角的“體積”,它的“底面”是一個體積為 1/6 的三維體,在第四維上對其進行積分便可得到其“體積”
∫(0..1) (x^3)*1/6 dx = 1/24
依此類推, n 個隨機數之和不超過 1 的概率就是 1/n! ,反過來 n 個數之和大於 1 的概率就是 1 – 1/n! ,因此加到第 n 個數才剛好超過 1 的概率就是
(1 – 1/n!) – (1 – 1/(n-1)!) = (n-1)/n!
因此,要想讓和超過 1 ,需要累加的期望次數為
∑(n=2..∞) n * (n-1)/n! = ∑(n=1..∞) n/n! = e
