蒙特卡洛随机方法/模拟(Monte Carlo method)

2020-04-01 16:31:14 浏览数 (1)

蒙特卡洛随机方法,即统计模拟方法,是一类以概率统计理论为指导的数值计算方法。本质上是用部分估计整体,采样越多,则越近似最优解。

最常见最经典的例子是求圆周率pi的值。如下图所示:

example

正方形内有一内接圆,假如圆的半径为r,则圆与正方形的面积比为pi/4。假如我们向这个正方形内撒石子,撒很多次,且这些石头的分布属于均匀分布,那么出现在圆中的石子的概率约等于圆与正方形的面积比。即pi=4 * count/n,count为在圆中的次数,n为总次数。

用python表示,为:

代码语言:javascript复制
import random

# 假设半径r=1
r = 1

count = 0
n = 100000

for i in range(n):
    x = random.uniform(-1, 1)
    y = random.uniform(-1, 1)
    if x ** 2   y ** 2 <= 1:
        count  = 1
pi = 4 * (count / n)
print(pi)

返回3.1428。存在一些误差,当模拟次数更多的时候,会更接近结果。

蒙特卡洛算法现在在强化学习中发挥了很重要的作用。

欢迎关注公众号!

生信编程日常

0 人点赞