【Python】蒙特卡罗方法计算圆周率及给定随机数种子

蒙特卡罗方法
利用随机点分布,让随机点足够的多,用指定区域随机点数与总区域随机点数做比值来求取指定区域面积

求解圆周率,在一个正方形中撒点,根据在1/4圆内点的数量占总撒点数的比例计算圆周率值。
在这里插入图片描述
代码如下:

#CalPi.py
from random import random
from time import perf_counter
DARTS = 1000*1000 #当前在区域中点的总数量
hits = 0.0 #目前在圆的内部的点的数量
start = perf_counter()
for i in range (1,DARTS+1):
	x,y = random(),random()
	dist = pow(x**2+y**2,0.5)
	if dist <= 1.0:
		hits = hits+1
pi = 4*(hits/DARTS)
print("圆周率的值是:{}".format(pi))
print("运行时间是:{:.5f}s".format(perf_counter()-start))

现以123作为随机数种子,获得用户输入的撒点数量,编写程序输出圆周率的值,保留小数点后6位。

代码如下:

from random import random,seed
seed(123)
darts = eval(input())
hits = 0.0
for i in range (darts):
	x,y = random(),random()
	d = pow(x**2+y**2,0.5)
	if d <= 1.0:
		hits = hits+1
pi = 4*(hits/darts)
print("圆周率的值为:{:.6f}".format(pi))
发布了20 篇原创文章 · 获赞 38 · 访问量 908

猜你喜欢

转载自blog.csdn.net/weixin_45506775/article/details/104280020