目录
1. 大数定律
2. 估算圆周率
2.1 公式
2.2 代码
2. 估算定积分
3.1 公式
3.2 代码
1. 大数定律 大数定律是蒙特卡罗算法的理论依据,大数定律的内容如下
在随机事件的大量重复出现中,往往呈现几乎必然的规律,这个规律就是大数定律。
我们来简单看看伯努利大数定律的严格数学表达:
设
文章图片
是
文章图片
次独立试验中事件A发生的次数,且事件A在每次试验中发生的概率为
文章图片
,则对任意正数
文章图片
有
文章图片
通俗地说,这个定理就是在试验不变的条件下,重复试验多次,随机事件的频率近似于它的概率。
2. 估算圆周率 蒙特卡罗算法可以用来估计面积,而圆的面积和
文章图片
有关,所以我们也可以用蒙特卡罗算法来估计
文章图片
的值。
文章图片
2.1 公式 我们来在正方形内撒
文章图片
个点,记落在圆内的点的个数为
文章图片
个,记点落在圆内的概率为
文章图片
,那么由古典概型我们知道
文章图片
,由伯努利大数定律我们知道
文章图片
,于是我们得到
文章图片
.
2.2 代码 代码基本思路就是生成大量随机数,判断是否在圆内得到
文章图片
,直接代公式就行。
import randomdef pai():
n = 1000000
r = 1.0
a, b = (0.0, 0.0)
x_neg, x_pos = a - r, a + r
y_neg, y_pos = b - r, b + rm = 0
for i in range(0, n):
x = random.uniform(x_neg, x_pos)
y = random.uniform(y_neg, y_pos)
if x*x + y*y <= 1.0:
m += 1print 4*m/float(n)
2. 估算定积分 蒙特卡罗算法还常用于计算定积分的近似值。
3.1 公式 首先由积分第一中值定理我们得到:
文章图片
,这里的
文章图片
就相当于这个区间上所有函数值的平均值,我们现在在x轴上随机取
文章图片
个点
文章图片
,计算对应函数值
文章图片
,计算平均值
文章图片
,于是我们有
文章图片
,最后得到
文章图片
。
3.2 代码 我们以
文章图片
为例。
def integral():
n = 1000000
x_min, x_max = 0.0, 1.0
y_min, y_max = 5.0, 8.0m = 0
for i in range(0, n):
x = random.uniform(x_min, x_max)
y = random.uniform(y_min, y_max)
# x*x*x+2*x*x+5 > y,
if x*x*x+2*x*x+5 > y:
m += 1integral_value = https://www.it610.com/article/m / float(n)
print integral_value
【深度学习|基于Pytorch的强化学习(DQN)之蒙特卡罗算法】
推荐阅读
- 神经网络|目标检测算法YOLOv4详解
- DL|深入理解PyTorch中LSTM的输入和输出(从input输入到Linear输出)
- 深度学习与神经网络|计算机视觉之卷积神经网络
- 环境搭建|tensorflow安装测试教程【一文读懂】
- 神经网络|(翻译)60分钟入门深度学习工具-PyTorch
- java|亚马逊跨境电商平台怎么入驻()
- 手把手搭建一个pytorch mobile 的Android APP
- 模型部署|通过MACE在Android手机上部署深度学习模型
- Pytorch|超最简单的安卓端深度学习模型部署教程——pytorch2onnx2pdinfer2android