蒙特卡洛随机方法,即统计模拟方法,是一类以概率统计理论为指导的数值计算方法。本质上是用部分估计整体,采样越多,则越近似最优解。
最常见最经典的例子是求圆周率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。存在一些误差,当模拟次数更多的时候,会更接近结果。
蒙特卡洛算法现在在强化学习中发挥了很重要的作用。
欢迎关注公众号!
生信编程日常