Skip to content
  • 头号玩家娱乐
  • 头号玩家娱乐平台
  • 头号玩家平台
  • 头号玩家游戏网站
logo

头号玩家平台 | 头号玩家娱乐 | 头号玩家游戏网站 | 头号玩家娱乐平台

头号玩家平台-邀请您体验K8娱乐
头号玩家平台注册头号玩家平台登录
  • Home
  • 头号玩家娱乐平台
  • 蒙特卡罗:蒙特卡罗方法详解
头号玩家娱乐平台
2023年6月16日

蒙特卡罗:蒙特卡罗方法详解

蒙特卡罗方法详解

蒙特卡罗方法是由冯诺依曼和乌拉姆等人发明的,“蒙特卡罗”这个名字是出自摩纳哥的蒙特卡罗赌场,这个方法是一类基于概率的方法的统称,不是特指一种方法。

蒙特卡罗方法也成统计模拟方法,是指使用随机数(或者更常见的伪随机数)来解决很多计算问题的方法。他的工作原理就是两件事:不断抽样、逐渐逼近。下面用两个例子[1]来理解一下这个方法的思想。

(1)圆周率 \pi 值求解

如图所示,有一个半径为r=1的圆和边长为1的正方形,圆的面积为 \pi r^{2}=\pi ,则正方形内部的相切圆的面积为整个圆的1/4,也就是 \frac{\pi}{4} ,正方形的面积为1。然后我们向正方形中随机打点,就会有一定的概率落在圆中:

这样我们就可以得到落在圆中的概率就是=圆的面积/正方形面积=\frac{\pi}{4},那么就可以推出圆周率的计算公式:

\pi = 4*落在圆中的概率=4*(红色点数/总点数)

其中红色点可以定义为距离圆点距离小于1的点,可以通过python实现来看一下:

import random

total = [10, 100, 1000, 10000, 100000, 1000000, 5000000] #随机点数

for t in total:

in_count = 0

for i in range(t):

x = random.random()

y = random.random()

dis = (x**2 + y**2)**0.5

if dis<=1:

in_count += 1

print(t,'个随机点时,π是:', 4*in_count/t)

可以看出随着随机点数的增加,近似度逐渐增大。

(2)计算不规则图形面积

比如下面这张黑底图片,想要计算图中白色图形的面积,其中图形都是不规则图形,我们没办法通过边长公式等进行计算,其中一种方法就是可以通过蒙特卡罗方法,向图上随机打点,然后获取像素点所在的颜色,白色面积=白色点数/总点数*图片总面积(当然其实可以用计算机遍历所有像素点也可以求,但这里主要用来说明蒙特卡罗思想的方法)

命名为monge.png

下面还是通过python进行实现:

from PIL import Image

import random

img = Image.open('monte.png') #读取图片

total = [10, 100, 1000, 10000, 100000, 1000000, 5000000] #随机点数

for t in total:

in_count = 0

for i in range(t):

x = random.randint(0, img.width-1)

y = random.randint(0, img.height-1)

if img.getpixel((x,y))==(255,255,255,255): #数据输出格式:(R, G, B, A)

in_count += 1

print(t,'个随机点时,白色面积为:', int(img.width*img.height*in_count/t))

通过上面两个例子我们可以理解蒙特卡罗算法的一个基本思想,其实就是通过随机点来模拟实际的情况,不断抽样以逼近真实值。

由蒙特卡洛法得出的值并不是一个精确值,而是一个近似值,而且当投点的数量越来越大时,这个近似值也越接近真实值。

通常蒙特卡罗方法可以粗略地分成两类[2]:

一类是所求解的问题本身具有内在的随机性,借助计算机的运算能力可以直接模拟这种随机的过程。例如在核物理研究中,分析中子在反应堆中的传输过程。中子与原子核作用受到量子力学规律的制约,人们只能知道它们相互作用发生的概率,却无法准确获得中子与原子核作用时的位置以及裂变产生的新中子的行进速率和方向。科学家依据其概率进行随机抽样得到裂变位置、速度和方向,这样模拟大量中子的行为后,经过统计就能获得中子传输的范围,作为反应堆设计的依据。

另一种类型是所求解问题可以转化为某种随机分布的特征数,比如随机事件出现的概率,或者随机变量的期望值。通过随机抽样的方法,以随机事件出现的频率估计其概率,或者以抽样的数字特征估算随机变量的数字特征,并将其作为问题的解。这种方法多用于求解复杂的多维积分问题。

比如积分 \theta=\int_{a}^{b}f(x)dx ,如果f(x)的原函数很难求解,那么这个积分也会很难求解。

那么我们如何通过蒙特卡罗方法对其进行模拟求解呢?

蒙特卡罗:蒙特卡罗方法详解

(1)随机投点法

这个方法和上面的两个例子的方法是相同的。如下图所示[3],有一个函数f(x),要求它从a到b的定积分,其实就是求曲线下方的面积:

这时可以用一个比较容易算得面积的矩型罩在函数的积分区间上(假设其面积为Area),然后随机地向这个矩形框里面投点,其中落在函数f(x)下方的点为绿色,其它点为红色,然后统计绿色点的数量占所有点(红色+绿色)数量的比例为r,那么就可以据此估算出函数f(x)从 a 到 b 的定积分为 Area × r。

(2)平均值法(期望法)

如下图所示,在[a,b]之间随机取一点x时,它对应的函数值就是f(x),我们要计算\theta=\int_{a}^{b}f(x)dx,就是图中阴影部分的面积。

一个简单的近似求解方法就是用 f(x)*(b-a) 来粗略估计曲线下方的面积,在[a,b]之间随机取点x,用f(x)代表在[a,b]上所有f(x)的值,如下图所示:

用一个值代表[a,b]区间上所有的 ( )的值太粗糙了,我们可以进一步抽样更多的点,比如下图抽样了四个随机样本 x_{1},x_{2},x_{3},x_{4}(满足均匀分布),每个样本都能求出一个近似面积值 f(x_{i})*(b-a) ,然后计算他们的数学期望,就是蒙特卡罗计算积分的平均值法了。

用数学公式表述上述过程:

S=\frac{1}{4}[f(x_{1})(b-a)+f(x_{2})(b-a)+f(x_{3})(b-a)+f(x_{4})(b-a)]=\frac{1}{4}(b-a)(f(x_{1})+f(x_{2})+f(x_{3})+f(x_{4}))=\frac{1}{4}(b-a)\sum_{i=1}^{4}{f(x_{i})}

然后进一步我们采样n个随机样本(满足均匀分布),则有:

S=\frac{b-a}{n}\sum_{i=1}^{n}{f(x_{i})}\simeq\theta

采样点越多,估计值也就越来越接近。

上面的方法是假定x在[a,b]间是均匀分布的,而大多时候x在[a,b]上不是均匀分布的,因此上面方法就会存在很大的误差。

这时我们假设x在[a,b]上的概率密度函数为 p(x) ,加入到\theta=\int_{a}^{b}f(x)dx中变换为:

\theta=\int_{a}^{b}f(x)dx=\int_{a}^{b}\frac{f(x)}{p(x)}p(x)dx\simeq\frac{1}{n}\sum_{i=1}^{n}{\frac{f(x_{i})}{p(x_{i})}}

这就是蒙特卡罗期望法计算积分的一般形式。

那么问题就换成了如何从p(x)中进行采样。


蒙特卡罗采样方法:

① 常见的概率分布采样

补更:这里再更新解释一下,说的更简单一些。

在均匀分布U(0,1)中采样是十分容易通过计算机实现的,针对常见的概率分布都可以通过均匀分布来进行采样,比如下面这个正态分布(当然一般正态分布也不需要通过这种方法,就是为了更好的说明)的概率密度曲线PDF,我们绘制它的累计概率分布曲线CDF:

CDF曲线的纵轴是从0到1的,我们可以从均匀分布U(0,1)中采样一个点,然后计算其CDF的反函数,就能得到我们需要的样本点x:


原讲解:

如果x在[a,b]的概率分布是我们常见的分布,就可以将其概率密度公式p(x)直接代入 \theta=\frac{1}{n}\sum_{i=1}^{n}{\frac{f(x_{i})}{p(x_{i})}} 中然后求解。

例如 在[a,b]之间是均匀分布,此时 p(x_{i})=\frac{1}{b-a} ,代入上式为 (与上面推导出来的相同):\theta=\frac{1}{n}\sum_{i=1}^{n}{\frac{f(x_{i})}{1/(b-a)}}=\frac{b-a}{n}\sum_{i=1}^{n}{f(x_{i})}

其他常见的分布比如正态分布、t分布,F分布,Beta分布,Gamma分布等[4],都可以通过标准均匀分布 U(0,1) 来变换生成(标准正态分布是十分容易采样样本的)。在python的numpy,scikit-learn等类库中,都有生成这些常用分布样本的函数可以使用。

举例说明,例如基于标准均匀分布 U(0,1) 来生成标准正态分布 Z(0,1) :
设随机变量 u_{1},u_{2} 独立且 u_{1},u_{2} \sim U(0,1) ,那么 z_{0}=\sqrt{-2lnu_{1}}cos(2\pi u_{2}),z_{1}=\sqrt{-2lnu_{1}}sin(2\pi u_{2}) 独立且服从标准正态分布。
(著名的Box−Muller变换)

不过很多时候,我们的 的概率密度p(x)不是常见的分布,它的形式可能非常复杂,或者p(x)是个高维的分布,样本的生成可能就很困难了。

② 接受拒绝采样

补更:这里再更新解释一下,说的更简单一些。

当待采样函数P(x)的形式十分复杂时,可以找一个简单的建议分布g(x),并将其乘一个常数C使其全部在p(x)的上方,如下图所示,红线是我们要采样的p(x),蓝色曲线为C*g(x):

然后思路其实和前面的投点法差不多,就是从均匀分布中随机采样一个点,如果这个点在红色曲线下方,就接受它,如果在红色曲线和蓝色曲线中间,就拒绝这个点。当C*g(x)越接近q(x)时接受率越高,采样效率越高,因此有时他们差距比较大时,就会出现大部分的点都被拒绝,这样效率会非常低。


原讲解:

接受拒绝采样是一种可行的得到该分布的样本的方法,根本目标就是根据给定的概率密度函数p(x),产生服从目标分布的样本集X。[5]

采样前的准备工作:

  • 首先需要一个辅助的建议分布(proposal distribution),将其记做G,已知其概率密度函数为g(y)。我们要由G分布来产生候选样本,因此需要我们能够从G抽样,那么G抽样虽然原理上可以是任意分布,但我们应该尽量选择一个易于处理且计算机易于采样的分布,比如可以选择均匀分布、正态分布;
  • 然后我们还需要计算一个常数值C,使其对于任意变量x有c∗g(x)\geqslant f(x),为了提高采样效率,在满足条件的前提下常数值C越小越好(当然,我们非常希望C接近于1);
  • 还需要一个辅助的均匀分布U(0,1)。

真正的采样过程:

  • step1:从建议分布 G 中进行采样,得到一个采样样本 Y 。
  • step2:从分布 U(0,1) 中进行采样,得到一个采样样本 U 。
  • step3:判断,如果 U\leqslant\frac{f(Y)}{c*g(Y)} ,则令 X=Y (接受这个采样值 Y ),否则拒绝这个采样值,继续执行step1。

可以结合下面的这个例子来进行理解:

例如x在[a,b]上的概率分p(x)=\frac{1}{1.2113}(0.3exp(-(z-0.3)^2)+0.7exp(-(z-2)^2/0.3),这个概率密度函数比较复杂,下面通过接受拒绝采样进行采样。

准备:

  • 建议分布G选择均值为1.4,方差为1.2的正态分布;
  • 常数值C=2.5

这样建议分布G的概率密度函数的C倍是恒大于目标分布的概率密度函数p(x)的,如下图所示。

执行:

  • step1:从建议分布 G 中进行采样,得到一个服从G分布的随机数Y。
  • step2:从分布 U(0,1) 中进行采样,得到一个服从标准均匀分布的随机数 U 。
  • step3:判断,如果 U\leqslant\frac{f(Y)}{c*g(Y)} ,也就是 f(Y)\geq U*C*g(Y) ,这里的几何意义就是对应图中的一点 (Y,U*C*g(Y)) 在p(x)的下方,则令接受这个采样值 Y ,添加到sample列表里,否则拒绝这个采样值,继续执行step1。

最后可以看到采样点的直方图概率分布是和p(x)大致相同的:

蒙特卡罗

上面示例的python实现:

import numpy as np

import matplotlib.pyplot as plt

from scipy.stats import norm, uniform

#目标采样分布的概率密度函数

def p(x):

return 0.3*np.exp(-(x-0.3)**2)+0.7*np.exp(-(x-2.)**2/0.3)

#建议分布G:选择均值为1.4,方差为1.2的正态分布

G_rv = norm(loc=1.4, scale=1.2)

#常数值C=2.5

C=2.5

#均匀分布U(0,1)

uniform_rv = uniform(loc=0, scale=1)

#绘制目标分布的概率密度函数p(x)与建议分布G的概率密度函数g(x)的C倍

x = np.arange(-4., 6., 0.01)

plt.plot(x, p(x), color='r', lw=2, label='p(x)')

plt.plot(x, C*G_rv.pdf(x), color='b', lw=2, label='C*g(x)') #g.pdf(x)表示正态分布的概率密度函数

plt.legend()

plt.show()

sample = []

#设10000个候选采样点

for i in range(10000):

#step1:从建议分布G中进行采样,得到服从G分布的随机数

Y = G_rv.rvs(1)[0] #rvs():产生服从指定分布的随机数

#step2:从均匀分布 U(0,1) 中进行采样,得到服从标准均匀分布的随机数

头号玩家娱乐平台

U = uniform_rv.rvs(1)[0]

#step3:判断,如果 P(Y)≥U*C*g(Y),则接受

if p(Y)>=U*C*G_rv.pdf(Y):

sample.append(Y)

#绘制目标分布的概率密度函数p(x)与建议分布G的概率密度函数g(x)的C倍

x = np.arange(-3., 5., 0.01)

plt.gca().axes.set_xlim(-3, 5)

plt.plot(x, p(x), color='r')

plt.hist(sample, color='b', bins=200, density=True, stacked=True, edgecolor='b') #把所有直方归一化到1

plt.show()

蒙特卡罗:蒙特卡罗方法详解

使用接受-拒绝采样,我们可以解决一些概率分布不是常见的分布的时候,得到其采样集并用蒙特卡罗方法求和得到。

[1]【智源学院】30分钟了解蒙特卡罗方法-有意思专题系列(蒙特卡洛方法)(Monte Carlo method)_哔哩哔哩 蒙特卡罗(゜-゜)つロ 干杯~-bilibili

[2]小白都能看懂的蒙特卡洛方法以及python实现_bitcarmanlee的博客-CSDN博客_蒙特卡洛

蒙特卡罗

[3]蒙特卡洛方法的理解、推导和应用_氢键H-H-CSDN博客_蒙特卡洛积分推导

[4]Eureka:马尔可夫链蒙特卡罗算法(MCMC)

蒙特卡罗

[5]如何理解蒙特卡洛方法的接受拒绝采样?

头号玩家娱乐平台

文章导航

Previous Post
Next Post
註冊美女01
新会员注册就送$5美金

最新文章

  • 探索pg娱乐电子游戏官网1665V的精彩游戏与优惠活动
  • 深入探讨安信软件的真实性与可靠性分析
  • 畅享pg游艺注册送体验金,体验无限乐趣与惊喜
  • 解决pp体育登录不了问题的有效方法与技巧
  • 澳门彩论坛最新公开开奖结果及分析分享

分类

  • 头号玩家娱乐
  • 头号玩家娱乐平台
  • 头号玩家平台
  • 头号玩家游戏网站
2025 年 9 月
一二三四五六日
1234567
891011121314
15161718192021
22232425262728
2930 
« 6 月    

头号玩家娱乐 头号玩家娱乐平台 头号玩家平台 头号玩家游戏网站

头号玩家平台 | 头号玩家娱乐 | 头号玩家游戏网站 | 头号玩家娱乐平台

欢迎来到:头号玩家平台

头号玩家平台是一家知名的在线娱乐平台,提供各种类型的线上游戏,如老虎机游戏、真人视讯等。其官方网站为https://touhao-wanjia.org,同时还提供头号玩家平台官网注册供玩家畅玩游戏。游戏平台注重用户体验和数据安全,提供专业的服务和优惠活动,备受玩家信赖和喜爱。

头号玩家平台应用近期版本更新


2022年7月11日 版本5.3.3

1.头号玩家平台移动项目组根据近期赛事类型,综合考虑玩家对不同赛事的参与热情,决定提升电子竞技类型赛事在界面中的显示顺序。

2022年6月28日 版本5.3.2

1.头号玩家平台近期将针对新兴赛事投放部分定向奖励,以鼓励用户在传统赛事的夏季休赛期期间尝试参与一些更具有活力的体育项目。

2022年5月17日 版本5.3.1

1.头号玩家平台体育应用内投放有关欧冠赛事的红利红包。
2.头号玩家平台移动业务技术团队计划降低手机应用大版本更新频率,通过热更新的方式完成日常更新,提升用户体验。

2022年4月17日 版本5.3.0

1.完整修复头号玩家平台手机应用内欧冠赛事板块的部分显示错误,并调整显示顺序。

2022年4月13日 版本5.2.9.2

1.修复头号玩家平台手机应用内欧冠赛事板块的部分显示错误。
2.头号玩家平台体育应用内进行"欧冠欧足联红包雨"活动,于4月12日至4月15日期间合计发放14波红包雨。

2022年3月15日 版本5.2.9

1.头号玩家平台体育应用调整部分欧洲体育赛事板块顺序。
2.修复头号玩家平台手机应用内部分屏幕显示适配错误。

2022年1月30日 版本5.2.7

1.金虎迎新春,头号玩家平台上下全体员工祝各位用户2022壬寅年新春快乐。
2.头号玩家平台体育推出多项春节活动。

2022年1月9日 版本5.2.6

1.头号玩家平台体育应用内上线英雄联盟2022赛季LPL春季赛相关活动。
2.修复头号玩家平台手机应用在夜间模式下的部分显示错误。

2021年12月24日 版本5.2.4

1.头号玩家平台手机应用上线圣诞系列赛事活动。
2.更新部分线路,提升用户连接稳定性。

2021年12月1日 版本5.2.2

1.头号玩家平台体育手机应用内根据五大足球联赛的相应热度进行页面排版布局的优化。

2021年10月28日 版本5.2.1

1.头号玩家平台体育电竞板块迎接S11英雄联盟全球总决赛,上线部分红包活动。
2.在头号玩家平台体育预测英雄联盟赛事胜负,获取额外奖励。

2021年9月28日 版本5.1.2

1.月迎中秋,喜迎国庆,头号玩家平台手机应用内上线部分红包活动。
2.上调欧冠赛事在左侧选项卡中的显示顺序。

2021年9月10日 版本5.1.1

1.头号玩家平台体育更新部分线路,提升用户连接稳定性。

2021年8月10日 版本4.7.3

1.东京奥运会圆满结束,庆祝中国体育健儿获得第二名的好成绩,头号玩家平台投放最后一波奥运主题红包。

2021年7月28日 版本4.7.2

1.头号玩家平台手机应用内根据东京奥运会的项目热门程度,对整体显示顺序进行调整。

2021年7月16日 版本4.7.1

1.头号玩家平台体育上线"传递奥运圣火,助力东京奥运"活动。
2.更新部分线路,提升用户连接稳定性。

2021年7月11日 版本4.6.7

1.头号玩家平台体育上线"冠军之路,闯关拿奖"活动,预祝欧洲杯圆满结束。
2.更新部分线路,提升用户连接稳定性。

2021年7月7日 版本4.6.6

1.头号玩家平台体育提前上线"助威欧洲杯决赛,分享红包雨"活动,决赛对阵队伍出炉后开始推送。
2.更新部分线路,提升用户连接稳定性。

2021年7月4日 版本4.6.5

1.头号玩家平台各线路运营趋向稳定,删除了部分备用线路,保留响应较快的线路以提升用户连接速度。
2.修复部分软件Bug。

2021年6月30日 版本4.6.4

1.由于近期银行整体风控水平加剧,为避免等待时间过长,头号玩家平台普通提款通道提款金额范围由原来100-49000调整为5001-49000,5001以下金额提款可使用方便又快捷的【头号玩家平台极速提款】通道进行提款。
2.增加部分线路,提升头号玩家平台用户连接速度与稳定性。

2021年6月24日 版本4.6.3

1.更新并增添头号玩家平台手机应用内部分用于解析的域名,提升用户使用稳定性。
2.在头号玩家平台应用内增加转账异常自动处理入口,更好更快解决部分订单转账后入账慢的问题。
3.提升头号玩家平台全渠道加密货币USDT存款充值奖励。泰达币(USDT)是基于美元(USD)的加密货币,用户可以随时使用USDT与USD进行1:1兑换,加密货币的低手续费、快转账速度特性比传统货币联网交易的模式有极大优势。

2021年6月18日 版本4.6.2

1.增加欧洲杯相关活动的红包和奖励通知。
2.头号玩家平台全站及体育应用增加大量内嵌线路,力求为用户在欧洲杯期间提供稳定服务。
3.修复部分软件Bug。

2021年6月8日 版本4.6.1

1.迎接欧洲杯活动,头号玩家平台体育增加大量内嵌线路。
2.伴随防火墙技术升级,近期头号玩家平台将频繁出现域名更换现象,请及时关注最新更新信息。

2021年5月28日 版本4.5.9

1.伴随英雄联盟Msi季中赛结束,头号玩家平台更改部分显示顺序和入口优先级,对部分Msi赛事玩家投放红包。
2.增加部分线路应对大规模DNS污染活动。

2021年5月6日 版本4.5.8

1.迎接英雄联盟Msi季中赛,头号玩家平台更改部分显示顺序和入口优先级。

2021年4月30日 版本4.5.7

1.迎接五一,头号玩家平台增加部分优惠信息。

2021年4月7日 版本4.5.6

1.增加部分线路,提升头号玩家平台用户连接速度与稳定性。

2021年3月25日 版本4.5.5

1.庆祝头号玩家平台与AC米兰达成赞助合作,为相关合作活动内容预留展示窗口。
2.修复部分软件Bug。

2021年3月7日 版本4.5.4

1.更新部分财务界面,提升用户存提款效率。
2.优化项目内容排版。

2021年2月20日 版本4.5.3

1.更新部分线路,提升用户连接稳定性。
2.优化界面前端排版。

2021年2月8日 版本4.5.2

1.庆祝农历新年,全站和体育应用内增加部分优惠及彩蛋内容。
2.修复部分软件Bug。

2021年1月7日 版本4.5.1

1.更新部分线路,提升用户连接稳定性。
Back to top
Proudly powered by K8 Gaming Group | Copyright © 2023 | 头号玩家平台. 版权所有
头号玩家平台 | 头号玩家娱乐 | 头号玩家游戏网站 | 头号玩家娱乐平台
  • 头号玩家娱乐
  • 头号玩家娱乐平台
  • 头号玩家平台
  • 头号玩家游戏网站
Add your widget here
转到手机版