原文地址:http://hankjin.blog.163.com/blog/static/3373193720108811316123/
原理:平均e个(0,1)之间的随机数之和会大于1.
原因:n个数之和小于1的概率是1/n!,则n个数之和大于1的概率则是1-1/n!;
恰好n个数之后大于1的概率,等于n个数之后大于1的概率减去n-1个数之和大于1的概率,即
(1-1/n!) 
- (1-1/(n-1)!) = (n-1)/n!
则n的期望为
sum( (n-1)/n! * n ) = sum( 
(n-1)/(n-1)! ) 
= 
sum(n/n!)
又因为sum(n/n!)=e,所以平均e个(0,1)之间随机数之和大于1.
代码如下:可惜收敛较慢,效率较低。
#!/usr/bin/python
‘‘‘A 
method to calculate e
‘‘‘
__author__ = 
"hankjin<hankjin@163.com>"
import random,math
def 
calce(iter=1000000):
    ‘‘‘ calculate math.e with 
<iter> 
iterations.
    ‘‘‘
    
res=0
    for i in 
range(iter):
        
tmp=0.0
        while 
tmp<1:
            
res+=1
            
tmp+=random.random()
    return float(res)/iter
if 
__name__==‘__main__‘:
    print(‘real e=‘, 
math.e)
    print(‘calculated 
e=%s‘, calce())
原文地址:http://www.cnblogs.com/CocoWang/p/3700606.html