1 问题
蒙特卡罗方法也成统计模拟方法,是指使用随机数(或者更常见的伪随机数)来解决很多计算问题的方法。工作原理就是两件事:不断抽样、逐渐逼近。如何利用python语言实现蒙特卡洛方法。
使用蒙特卡洛方法求出曲线y=x*x与x轴之间在0-1范围内的面积(种子数为10 使用100000个点进行计算),最后结果保留3位小数。
使用蒙特卡洛实现圆周率值的求解:有一个半径为r=1的圆和边长为1的正方形,圆的面积为 π ,则正方形内部的相切圆的面积为整个圆的1/4,也就是 1/4π ,正方形的面积为1。然后我们向正方形中随机打点,就会有一定的概率落在圆中,这样我们就可以得到落在圆中的概率就是=圆的面积/正方形面积,那么就可以推出圆周率的计算公式:红色点数/总点数
2 方法
通过实验、实践等证明提出的方法是有效的,是能够解决开头提出的问题。
通过实验、实践等证明提出的方法是有效的,是能够解决开头提出的问题。
代码清单 1
#1.求面积
import random as rd
rd.seed(10)
total=100000
cnt=0
for i in range(1,100000+1):
x=rd.random()
y=rd.random()
if x**2>=y:
cnt+=1
print(f'{cnt/total:.3f}')
#2.求解圆周率π值
import random
total=[10,100,1000,10000,100000,1000000,50000000]#随机点数
for t in total:
in_count=0
for i in range(t):
x=random.random()
y=random.random()
dis=(x**2+y**2)**0.5
if dis<=1:
in_count+=1
print(t,'个随机点时,π是:',4*in_count/t)
3 结语
针对实现蒙特卡洛方法,主要运用了随机数生成与循环for一句,通过上面实验,证明该方法是有效的,本文的方法存在需要注意的第一种问题需注意随机数对种子数赋值的方法,虽然是细节,但也应该注意,第二种方法也同样,也主要运用了随机数赋值方法。两种方法原理不是很深,在以后的学习中还可以向深处挖掘以及进行代码的简化,任重而道远。