【Python】学习笔记12
random是使用随机数的Python标准库,random库和之前说过的turtle库,time库一样,它是随着解释器而自带的库,不需要安装,直接使用import。(import random)
从哲学的角度讲,我们抛出一枚硬币,正面与反面是随机的。但是计算机呢,不可能产生随机值,也可以理解为随机数是在各种复杂条件下产生的确定值,只不过这些复杂条件我们不能充分理解,或者超越我们的理解能力。
但是,计算机可以产生伪随机数。
伪随机数:采用梅森旋转算法生成的伪随机序列中的元素。
不过这些数据表现为随机数的形式,random库主要用于生成这样的随机数。random库包括两类函数,常用共8个。
基本随机函数
seed() 、random()
扩展随机函数
randint()、getrandbits()、uniform()
randrange()、choice()、shuffle()
简单来说最基本的就是random(),后面的所有函数都是基于这个函数扩展而来的。
Python中的随机数使用随机数种子来产生:
随机数种子 >>> 梅森旋转算法 >>> 随机序列
比如种子10,
采用旋转算法之后,
会生成随机序列,
0.673267498716572436
0.457198436584519843
0.821094832178435987
0.387312498327983599
0.347891350594593939
。。。
这个随机序列是根据种子来唯一确定的,
随机序列中的一个数,就是随机数。
只要种子相同,产生的随机序列,无论每一个数,还有数之间的关系都是相同的。、
random库提供了两个基本的函数
seed()
1、seed=(a=NONE) 初始化给定的随机数种子,默认当前的系统时间。
2、>>>random.seed(10)
产生种子10对应的序列
PS:如果不选定seed时,将当前系统时间作为种子。
random()
生成一个[0.0 ,1.0]间的随机小数。
如果不使用种子,他会使用当前的系统时间,这个时间呢,精确到微秒级,这个时间是我们很难再现的,所以后面产生的结果就是完全随机,是我们不可再现的。
如果我们想再现随机过程,就使用种子,如果只关心程序的随机结果,就不设定种子。
调用一次相同的种子,产生的随机数列也相同,以seed(10)为例,一定会产生如图所示的文字。
random库提供了六个常用的随机数扩展函数。
randint(a,b)生成一个[a,b]之间的整数
>>>random,randint(10,100) 生成64
randrange(m,n,k)生成一个[m,n)之间以k为步长的随机整数
>>>random.randrange(10,100,10) 生成80
getrandbits(k)生成一个k比特长的随机函数
>>>random.getrandbits(16) 生成37885
uniform(a,b)生成一个[a,b]之间的随机小数
>>>random.uniform(10,100) 生成13.096321648808136
choice(seq)从序列seq中随机选取一个元素
>>>random.choice([1,2,3,4,5,6,7]) 生成5
shuffle(seq)将序列seq中的元素随机排列,返回打乱后的序列
>>>s=[1,2,3,4,5,6,7,8,9];random.shuffle(s);print(s) 生成[3,5,8,9,6,1,2,7,4]
需要掌握的能力
1 我们能利用随机种子产生确定的伪随机数;
2 能够产生随机整数 ;
3 能对序列进行随机操作;
tips:
1、三行代码放在一行中 用分号分割;
2、在代码编写中,每一行尽量独立写一行,这样可读性更好。