random库与使用蒙特卡洛方法计算圆周率

简介

random库Python的另一个标准库,它主要是用来生成随机数的。random库生成的随机数是采用梅森旋转算法生成的(伪)随机数。

主要的函数

常用函数

random.seed(a=None)

初始化一个随机数的种子,默认为系统的时间。相同的种子对应的随机数是相同的。

random.random()

随机生成(0.0,1.0)之间的小数。这个函数在随机数使用中比较常用。

通过两段代码来理解以下

import random
random.seed(10)
print(random.random())
#run->0.5714025946899135
print(random.random())
#run->0.4288890546751146


import random
random.seed(10)
print(random.random())
#run->0.5714025946899135
random.seed(10)
print(random.random())
#run->0.5714025946899135

从上面两个代码可以很明显的看出random.seed()可以使产生的随机数相等,可以方便后面测试。

拓展的随机数函数

random.randint(a,b)

从a,b之间随机产生一个整数。

random.randrange(a,b[,k])

在a,b之间以k为步长产生一组数,从这个中间随机生成一个数。

random.getrandbits(k)

生成一个k比特长的随机整数

random.uniform(a,b)

生成一个a,b之间的随机小数

random.choice(seq)

从序列seq中随机选取一个数

random.shuffle(seq)

将seq序列打乱从新排序

圆周率的计算

圆周率可以通过科学家给出的公式计算,也可以使用蒙特卡洛方法进行计算

蒙特卡洛方法

它通过对圆和正方形上进行撒点,通过计算点的数量之比,来估算出面积之比,这种方法是一种很工程的方法,它是一种解决问题的思路和方法,可以应用到很多领域。

计算圆周率的代码

#调用random和time库
import random
import time
#初始化date和a
date=1000*1000
a=0.0
#计时开始
start=time.perf_counter()
#进行date次循环,将点都撒到平面中
for i in range(date+1):
    #确保每一个点都是随机撒落的
    x,y=random.random(),random.random()
    #判断是否在圆内
    l=pow(x**2+y**2,0.5)
    if l<=1.0:
        a+=1
pi=4*(a/date)
end=time.perf_counter()
t=end-start
print("圆周率是{}".format(pi))
print("运行时间是{:.6f}s".format(t))
#run->圆周率是3.140892
#     运行时间是1.647806s

猜你喜欢

转载自blog.csdn.net/weixin_41442912/article/details/80507627