Monte Carlo
(1)循环次数C、计数器s;
(2)生成随机数;
(3)如果满足条件s+1;
(4)模拟结果=s/C。
优点:
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)
- 送上结果