【干货】Python:random库的用法
- 1. random库概述
- 2. random库与随机数运用
- 2.1 random库常用函数
- 2.2 常用函数运用
- 2.2.1 seed(s)
- 2.2.2 random()
- 2.2.3 randint(a, b)
- 2.2.4 getrandbits(k)
- 2.2.5 randrange(start, stop[ , step])
- 2.2.6 uniform(a, b)
- 2.2.7 choice(seq)
- 2.2.8 shuffle(seq)
- 2.2.9 sample(pop, k)
- 3. 习题
- 4. 本文代码编译环境及版本
- 5. 更新日志
- 6. 参考
1. random库概述
随机数在计算机应用中十分常见,Python语言提供了random库用于产生各种分布的伪随机数序列。
random库采用梅森旋转算法(Mersenne twister)生成伪随机数序列,可用于除随机性要求更高的加解密算法外的大多数工程应用。
注意:random 库是 python 版本中自带的一个随机库,无需安装,直接在py文件中加入 import random 拿来即用
2. random库与随机数运用
2.1 random库常用函数
函数 | 描述 |
seed (a=None) | 初始化随机数种子,默认值为当前系统时间 |
random() | 生成一个[0.0,1.0)之间的随机小数 |
randint(a, b) | 生成一个[a, b]之间的整数 |
getrandbits(k) | 生成一个k比特长度的随机整数 |
randrange(start, stop[ , step]) | 生成一个[start, stop)之间以step为步数的随机整数 |
uniform(a, b) | 生成一个[a, b]之间的随机小数 |
choice(seq) | 从序列类型(例如列表)中随机返回一个元素 |
shuffle(seq) | 将序列类型中的元素随机排列,返回打乱后的序列 |
sample(pop, k) | 从pop类型中随机选取k个元素,以列表类型返回 |
2.2 常用函数运用
2.2.1 seed(s)
- 作用:对后续产生的随机数设置种子,其中参数为种子
- 参数:s,随机数种子,一个整数或浮点数
- 优点:准确复现随机数序列,用于重复程序的运行轨迹
- 示例:见2.2.2
2.2.2 random()
- 作用:生成一个[0.0,1.0)之间的随机小数,不包括1
- 参数:无
- 其他:是random库中最基本的函数,所有其他随机函数都是基于这个函数的扩展
- 示例:
>>> from random import *
>>> seed(2) # 设置随机种子为2
>>> random()
0.9560342718892494
>>> random()
0.9478274870593494
>>> random()
0.05655136772680869
>>> seed(2) # 再次设置相同的种子,则后续产生的随机数相同
>>> random()
0.9560342718892494
>>> random()
0.9478274870593494
>>> random()
0.05655136772680869
>>> random() # 因为第一次设置的随机种子后只作用于3个,因此,第四个随机数与之前不同
0.08487199515892163
2.2.3 randint(a, b)
- 作用:生成一个[a, b]之间的随机整数,随机数可能等于b
- 参数:a,b均为整数
- 记忆:random(随机)+ integer(整数)
- 示例:
>>> from random import *
>>> randint(1,10)
1
>>> randint(500,1000)
895
>>> randint(-100,100)
-52
2.2.4 getrandbits(k)
- 作用:生成k比特长度的随机整数,其中k为二进制位数的长度
- 参数:k,一个整数
- 记忆:get(获取)+ random(随机)+ bits(比特)
- 示例:
>>> from random import *
>>> getrandbits(20)
876084
>>> len(bin(876084)) # 含0b前导符
22
>>> bin(876084)
'0b11010101111000110100'
2.2.5 randrange(start, stop[ , step])
- 作用:生成一个[start, stop)之间以step为步数的随机整数,使用方法与range()类似
- 参数:start,整数,表示开始;stop,整数,表示结束;step,整数,表示步数
- 记忆:random(随机)+ range(范围)
- 示例:
>>> from random import *
>>> randrange(10,1000,5)
895
>>> randrange(10,1000,5)
900
>>> randrange(10,1000,5)
805
>>> randrange(10,1000,2)
176
>>> randrange(10,1000,2)
146
2.2.6 uniform(a, b)
- 作用:生成一个[a, b]之间的随机小数,随机数可能等于b
- 参数:a,b,整数或浮点数
- 示例:
>>> from random import *
>>> uniform(1,10)
5.024293574373661
>>> uniform(1.1,19.8)
19.0744511272898
2.2.7 choice(seq)
- 作用:从序列类型中随机返回一个元素,序列类型包括列表、元组和字符串
- 参数:seq,一个序列类型变量
- 示例:
>>> from random import *
>>> choice('hello world')
'r'
>>> choice([2,3,4,5,6])
5
>>> choice((1,'python'))
'python'
2.2.8 shuffle(seq)
- 作用:将序列类型中的元素随机排列,返回打乱后的序列(主要为列表)
- 特点:由于排序后对原有变量进行重写,所以该函数不能作用于不可变序列,即主要用于列表类型
- 参数:seq,一个列表变量
- 示例:
>>> from random import *
>>> ls = [1,2,3,4,5,6]
>>> shuffle(ls)
>>> ls
[6, 1, 2, 5, 4, 3]
2.2.9 sample(pop, k)
- 作用:从pop表示的组合数据类型中随机选取k个元素,以列表类型返回。
- 注意:pop中所含的元素要不少于k个
- 参数:seq,一个组合数据类型,如列表、集合、元组、字符串等;k,一个整数
- 示例:
>>> from random import *
>>> sample({1,2,3,4,5},4)
[2, 4, 5, 1]
>>> sample([2,3,1,4,5],3)
[2, 5, 4]
>>> sample('python',3)
['y', 'n', 't']
>>> sample((1,2,3,4,5),3)
[1, 4, 5]
3. 习题
4. 本文代码编译环境及版本
- Python IDLE
- Python 3.7
5. 更新日志
时间 | 内容 |
2023.2.8 | 首次发表 |