一种计算e的方法
2014-04-30 09:26
134 查看
原文地址: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())
原理:平均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())
相关文章推荐
- 计算结构体成员偏移地址的一种方法
- RDD(转):一种基于内存的集群计算的容错性抽象方法(二)
- 【JAVA】通过公式字符串表达式计算值,网上的一种方法
- 一种高精度低复杂度的非线性函数定点计算方法
- [个人论文]一种基于GPU并行计算的MD5密码解密方法
- Unity 往复运动的一种计算方法
- 一种高精度低复杂度的非线性函数定点计算方法
- 网格顶点方向的计算(一种新的面积加权方法)
- 计算并设置ListView的高度,防止嵌套ScrollView监听出现问题,(两种方法,一种自定义,一种测量)
- 异构计算-1-10x10:一种异质性和提高能量效率的通用架构方法
- 一种计算π的方法
- 一种新的颜色相似度定义及其计算方法(作者郑斯彬)
- 一种计算两个不同样本集相似度的方法:Mahalanobis距离
- 一种计算日期的新方法
- mrp-材料毛需求的一种计算方法
- CPU+GPU集群计算中的一种动态负载均衡设计方法
- [信安Presentation]一种基于GPU并行计算的MD5密码解密方法
- 【转】弹性分布式数据集:一种基于内存的集群计算的容错性抽象方法
- 计算图片中的物体的实际尺寸的一种方法
- Cauchy行列式的一种计算方法