random 库是使用随机数的 Python 标准库。
从概率论角度来说,随机数是随机产生的数据(比如抛硬币),但是计算机不可能产生随机值,真正的随机数也是在特定条件下产生的确定值,只不过这些条件我们没有理解,或者超出了我们的理解范围。计算机不能产生真正的随机数,那么伪随机数也就被称为随机数。
伪随机数:计算机中通过采用梅森旋转算法生成的(伪)随机序列元素。
python中用于生成伪随机数的函数库是random。
因为是标准库,使用时候只需要:import random 即可。
random库包含两类函数,常用的共8个:
Python中产生随机数使用随机数种子来产生。
只要种子相同,产生的随机序列,无论是每一个数,还是数与数之间的关系都是确定的,所以随机数种子确定了随机序列的产生。随机序列中的每一个数就是随机数。
函数 | 描述 |
seed(a=None) | 初始化给定的随机数种子,默认为当前系统时间 >>>random.seed(10) #产生种子10对应的序列 |
random() | 生成一个[0.0,1.0)之间的随机小数 >>>random.random() 0.5714025946899135 |
使用随机数种子的好处是可以复现有随机数的程序。
随机数函数的使用要点:
--能够利用随机数种子产生“确定”伪随机数:seed生成种子,random函数产生随机数
--能够产生随机整数
--能对序列类型进行随机操作
函数 | 描述 |
randint(a,b) | 生成一个[a,b]之间的整数 >>>random.randint(10,1000) 49 |
randrange(m,n[,k]) | 生成一个[m,n)之间以k为步长的随机整数 >>>random.randrange(10,1000,10) 620 |
getrandbits(k) | 生成一个k比特长的随机整数 >>>random.getrandbits(16) 16383 |
uniform(a,b) | 生成一个[a,b]之间的随机小数 >>>random.uniform(10,100) 24.684121564308157 |
choice(seq) 序列相关 |
从序列中随机选择一个元素 >>>random.choice([1, 2, 3, 4, 5, 6, 7, 8, 9]) 5 |
shuffle(seq) 序列相关 |
将序列seq中元素随机排列,返回打乱后的序列 >>>s=[1, 2, 3, 4, 5, 6, 7, 8, 9]; random.shuffle(s); print(s) [3, 9, 7, 4, 1, 2, 6, 5, 8] |