转载于: https://www.cnblogs.com/masked/p/8846439.html
部分修改 为作者自己理解
random模块
random库是使用随机数的Python标准库
从概率论角度来说,随机数是随机产生的数据(比如抛硬币),但时计算机是不可能产生随机值,真正的随机数也是在特定条件下产生的确定值,只不过这些条件我们没有理解,或者超出了我们的理解范围。计算机不能产生真正的随机数,那么伪随机数也就被称为随机数
–伪随机数:计算机中通过采用梅森旋转算法生成的(伪)随机序列元素
python中用于生成伪随机数的函数库是random
因为是标准库,使用时候只需要import random
--基本随机函数: seed(), random()
--扩展随机函数:randint(), getrandbits(), uniform(), randrange(), choice(), shuffle()
Python中产生随机数使用随机数种子来产生 (只要种子相同,产生的随机序列,无论是每一个数,还是数与数之间的关系都是确定的,所以随机数种子确定了随机序列的产生)
基本随机函数
函数 | 描述 |
---|---|
seed(a=None) | 初始化给定的随机数种子,默认为当前系统时间>>>random.seed(10) #产生种子10对应的序列 |
random() | 生成一个[0.0,1.0)之间的随机小数>>>random.random() |
使用随机数种子的好处是可以复现有随机数的程序
import random
random.seed()
"""
seed() 相当于给你一个编码号 每一个随机的数都有一个编码号 ,
括号内如果不填数是根据系统时间给你编码号,
每一个编码号对应的是一个数
意义是让你这随机的数变成可控的数让随机产生的数字变成你可以控制的数字
如果两个或者多个seed(x) x = 数字 x相等那么随机数字相等
如果seed(x) 里x不消失将无限循环x
每次执行都会是随机同一个数
"""
a = random.random()
random.seed()
b = random.random()
print(a)
print(b)
扩展随机数函数
在random库中,最基本的是seed 和random 函数,但时功能比较单一,为此产生了6个扩展随机数函数
函数 | 描述 |
---|---|
randint(a,b) | 生成一个[a,b]之间的整数 |
randrange(m,n[,k]) | 生成一个[m,n)之间以k为步长的随机整数 |
getrandbits(k) | 生成一个k比特长的随机整数 |
uniform(a,b) | 生成一个[a,b]之间的随机小数 |
choice(seq) 序列相关 | 从序列中随机选择一个元素 |
shuffle(seq) | 将序列seq中元素随机排列,返回打乱后的序列 |
import random
print( random.randint(1,10) ) # 产生 1 到 10 的一个整数型随机数
print( random.random() ) # 产生 0 到 1 之间的随机浮点数
print( random.uniform(1.1,5.4) ) # 产生 1.1 到 5.4 之间的随机浮点数,区间可以不是整数
print( random.choice('tomorrow') ) # 从序列中随机选取一个元素
print( random.randrange(1,100,2) ) # 生成从1到100的间隔为2的随机整数
a=[1,3,5,6,7] # 将序列a中的元素顺序打乱
random.shuffle(a)
print(a)
输出结果
"""
4
0.061401400678613105
5.388597406589035
t
35
[1, 5, 7, 3, 6]
"""