伪随机数:采用梅森旋转算法生成的伪随机序列中元素
使用random库
一、基本随机函数
随机数需要一个种子,依据这个种子通过梅森旋转算法产生固定序列的随机数。
seed(a=None) 初始化给定的随机数种子,默认为当前系统时间
random() 生成一个[0.0,1.0)之间的随机小数
>>> import random >>> random.seed(5) >>> random.random() 0.6229016948897019 >>> random.random() 0.7417869892607294 >>> random.seed(5) >>> random.random() 0.6229016948897019
使用seed主要是在某些系统各种,根据这个随机种子,可以复现问题,如果不使用种子,则默认为当前系统的精度很大的时间,这个无法再重现。
二、扩展随机函数
randint(a,b) 生成一个[a,b]之间的整数
randrange(m,n[,k]) 生成一个[m,n)之间以k为步长的随机整数
getrandbits(k) 生成一个k比特长的随机整数
uniform(a,b) 生成一个[a,b]之间的随机小数
choice(seq) 从序列seq中随机选择一个元素
shuffle(seq) 将序列seq中元素随机排列,返回打乱后的序列
>>> random.randint(0,100) 94 >>> random.randrange(0,100,10) 50 >>> random.uniform(0,100) 69.04468457583359 >>> random.getrandbits(16) 52113 >>> random.choice([1,2,3,4,5,6,7]) 7 >>> s=[1,2,3,4,5,6,7] >>> random.shuffle(s) >>> s [4, 3, 5, 7, 2, 1, 6]
三、圆周率计算问题
圆周率的计算,除了使用一个复杂的数学公式外,还可以通过计算机来模拟最初圆周率的计算方法蒙特卡罗方法。蒙特卡罗方法是指随机的在这个圆所在的正方形中撒粒子,然后计算圆中粒子的个数,依次来计算圆的面积,或者圆周率。那么现在计算机这个聪明,我们就可以通过计算机来模拟随机粒子,来计算圆周率。代码如下:
#getPi.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): x, y = random(),random() dist = pow(x**2 + y**2, 0.5) if dist <= 1.0: hits +=1 pi = 4 *(hits/DARTS) print("圆周率是:{}".format(pi)) print("运行时间为:{:.5f}s".format(perf_counter() - start))