简介
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