python实现蒙特卡洛Monte Carlo算法

Monte Carlo算法步骤

(1)循环次数C、计数器s;
(2)生成随机数;
(3)如果满足条件s+1;
(4)模拟结果=s/C。

Monte Carlo优缺点

优点:

1.预测精确;
2.连续和非连续都能处理。

缺点:

1.计确时间通常较长;
2.误差是概率误差。

例子:以计算半径为1的圆面积为例。

#先计算第一象限内的面积
import random
import math
import matplotlib.pyplot as plt
C=2000#循环次数
s=0#计数器
#作图的视野范围
plt.xlim(xmax=1.5,xmin=0)
plt.ylim(ymax=1.5,ymin=0)
for i in range(C):
	#生成随机坐标(x,y)
    x=random.random()#生成0-1之间的随机数
    #print(x)
    y=random.random()#生成0-1之间的随机数
    #print(y)
    y_predict=math.sqrt(1-x**2)#圆在第一象限的函数
    #print(y_predict)
    if y_predict>=y:#坐标点y小于y_predict,才是圆的点,即才符合条件,计数器加1
        s=s+1
        plt.plot(x,y,'r+')
plt.show()  
#上面计算的是1/4面积,所以要乘4
predict_value=4*s/C
print(predict_value)

result:

模拟散点图:

在这里插入图片描述

计算结果:

在这里插入图片描述


版权声明:本文为weixin_39797176原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。