Python随机函数库

博客简介

本篇博客介绍随机函数库,并且用蒙特卡罗方法估算圆周率的值pi

随机数函数库

  • 在使用库函数之前需要导入库
  • 导入整个库:import random
  • 导入库中的某个函数:import random from random
函数 描述
choice(seq) 从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。
randrange ([start,] stop [,step]) 从指定范围内,按指定基数递增的集合中获取一个随机数,基数默认值为 1
random() 随机生成下一个实数,它在[0,1)范围内。
seed([x]) 改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed。
shuffle(lst) 将序列的所有元素随机排序
uniform(x, y) 随机生成下一个实数,它在[x,y]范围内。

蒙特卡罗方法估算圆周率的值

蒙特卡罗方法也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。与它对应的是确定性算法。蒙特·卡罗方法在金融工程学,宏观经济学,计算物理学(如粒子输运计算、量子热力学计算、空气动力学计算)等领域应用广泛。
我们将用蒙特卡罗发法来模拟计算Pi值,方法如下:
在这里插入图片描述

  • 确定一个单位面积的正方形
  • 在正方形内部抛洒大量的点
  • 对到圆心距离小于1的点求和
  • 计算Pi值:PI=4*Sr/Se
#coding=gbk
from random import random
import math
import time
DARTS=input("请输入模拟点的个数:")
DARTS=int(DARTS)
hits=0
start=time.time()
for i in range(1,DARTS):
	x,y=random(),random()
	distant=(x**2+y**2)
	if distant<=1.0:
		hits+=1
pi=4*(hits/DARTS)
end=time.time()
print("PI的蒙特卡洛观测值为:",pi)
print("模拟所花费的时间为:%.10f s"%(end-start))
'''
请输入模拟点的个数:999999
PI的蒙特卡洛观测值为: 3.1412871412871413
模拟所花费的时间为:0.7965762615 s
'''

我们可以逐渐增大点数,这样计算结果将会逼近PI的真实值。

发布了191 篇原创文章 · 获赞 377 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/weixin_44307065/article/details/104439847