蒙特·卡罗方法是一种通过概率来得到问题近似解的方法,在很多领域都有重要的应用,其中就包括圆周率近似值的计问题。
假设有一块边长为2的正方形木板,上面画一个单位圆,然后随意往木板上扔飞镖,落点坐标(x,y)必然在木板上(更多的时候是落在单位圆内),
如果扔的次数足够多,那么落在单位圆内的次数除以总次数再乘以4,这个数字会无限逼近圆周率的值。
这就是蒙特·卡罗发明的用于计算圆周率近似值的方法。
编写程序,模拟蒙特·卡罗计算圆周率近似值的方法,输入掷飞镖次数,然后输出圆周率近似值。
import random,math
s = 1 * 1
c = int(input())
hit = c
hits = 0
while hit != 0 :
hit = hit - 1
x = random.random()
y = random.random()
z = math.sqrt(x**2+y**2)
if z <= 1:
hits = hits + 1
PI = 4 * hits/c
print(PI)
这段程序主要运用通过计算落点的坐标与原点的距离来确定镖是否在中在圆内
当运行的次数足够大,也就会越来越逼近圆周率
另外再说一点就是python中的random()函数
random()函数的调用方法如下
import random
x = random.random()
返回的值在(0,1]之间