e值的MonteCalo法估计

伯努利信封装错问题估计e值

用MonteCarlo法估计自然常数e的值。

一.问题的提出

​ 一群人每人写一张卡片,卡片上是自己的名字。把卡片收上去,打乱次序,再随机发给每一个人。此时每个人拿到的都不是自己的概率趋近与 1 e \frac{1}{e} e1

二.问题的分析

如果我们多次重复此次实验( n n n次),那么用求得的事件每个人拿到的都不是自己的数字的事件发生的次数为 m m m,我们可以用大数定律求得: ∀ ϵ > 0 , l i m n → ∞ P { ∣ m n − 1 e ∣ < ϵ } = 1 \forall \epsilon >0,lim_{n\rightarrow \infty}P\{{|\frac{m}{n}-\frac{1}{e}|<\epsilon}\} = 1 ϵ>0,limnP{nme1<ϵ}=1

三.代码实现

import random,math
import matplotlib.pyplot as plt
numbers = 100 #总共有100个人
num = 10000   #实验总共重复10000次
Prop = 0
m = 0
xValue = []
yValue = []
zValue = []
randLine = []
for k in range(numbers):
    randLine.append(k)
for i in range(num):
    random.shuffle(randLine)
    for j in range(numbers):
        if randLine[j] == j:
            break
        if(j == numbers-1 ):
            m += 1
    if m == 0:
        m = 1e-5
    xValue.append(i)
    yValue.append(i/m)
Prop = m/num
plt.plot(xValue,yValue,color = 'blue',label = 'Estimate Value')
plt.xlabel('The numbers')
plt.ylabel('The estimate value of e')
plt.legend()
print("e的估计值是{:.4f}。".format(1/Prop))
plt.show()

迭代曲线为:

在这里插入图片描述
结果是:

e的估计值是2.7203
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值