平均要取多少個(0,1)中的隨機數才能讓和超過1


先用程序估算一下

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

 

轉自:http://www.matrix67.com/blog/archives/3507


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM