- 蒙特卡洛法:蒙特卡洛方法(Monte Carlo,简称MC),是以概率论和数理统计为理论基础、使用随机数(或更常见的伪随机数)解决实际问题的一种随机抽样统计方法,它常用于求解一些带有“随机”性质的实际生活问题和研究一些带有现条件下难以观测的物理量的实验。编程中采用的蒙特卡洛法就是指用随机数的方法。
假设一个正方形,边长a=2,则其内接圆的半径r=1,则圆和正方形的面积比是:
因此,
我们用蒙特卡洛法来获得面积比Sy/Sz:让计算机产生很多的随机点(x,y),其中x、y都是[0,1]之间的随机数,可以用判断 [公式]
是否小于1的方法来确定是否在圆内,则圆内的点数代表圆面积,总点数代表总面积,两者相除就是面积比Sy/Sz。
Python代码如下:
import random
num_all = 0 #随机点总计数器
num_cir = 0 #随机点在圆内的计数器
num_halt = 10000000 #每产生这么多个随机点后,计算并打印一次目前的结果
print("将进行无限计算,请用Ctrl_C或其他方式强制退出!!!")
input("按回车(Enter)键开始...")
print("开始计算...,退出请用Ctrl_C或其他强制退出方式...")
print("\n实验次数 计算结果")
while True :
for i in range(num_halt):
x = random.random() #获得随机点的横坐标
y = random.random() #获得随机点的纵坐标
if x*x + y*y < 1 : #随机点(x,y)在圆内
num_cir = num_cir &