【干货】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)

  1. 作用:对后续产生的随机数设置种子,其中参数为种子
  2. 参数:s,随机数种子,一个整数或浮点数
  3. 优点:准确复现随机数序列,用于重复程序的运行轨迹
  4. 示例:见2.2.2

2.2.2 random()

  1. 作用:生成一个[0.0,1.0)之间的随机小数,不包括1
  2. 参数:无
  3. 其他:是random库中最基本的函数,所有其他随机函数都是基于这个函数的扩展
  4. 示例
>>> 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)

  1. 作用:生成一个[a, b]之间的随机整数,随机数可能等于b
  2. 参数:a,b均为整数
  3. 记忆:random(随机)+ integer(整数)
  4. 示例
>>> from random import *
>>> randint(1,10)
1
>>> randint(500,1000)
895
>>> randint(-100,100)
-52

2.2.4 getrandbits(k)

  1. 作用:生成k比特长度的随机整数,其中k为二进制位数的长度
  2. 参数:k,一个整数
  3. 记忆:get(获取)+ random(随机)+ bits(比特)
  4. 示例
>>> from random import *
>>> getrandbits(20)
876084
>>> len(bin(876084)) # 含0b前导符
22
>>> bin(876084)
'0b11010101111000110100'

2.2.5 randrange(start, stop[ , step])

  1. 作用:生成一个[start, stop)之间以step为步数的随机整数,使用方法与range()类似
  2. 参数:start,整数,表示开始;stop,整数,表示结束;step,整数,表示步数
  3. 记忆:random(随机)+ range(范围)
  4. 示例
>>> 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)

  1. 作用:生成一个[a, b]之间的随机小数,随机数可能等于b
  2. 参数:a,b,整数或浮点数
  3. 示例
>>> from random import *
>>> uniform(1,10)
5.024293574373661
>>> uniform(1.1,19.8)
19.0744511272898

2.2.7 choice(seq)

  1. 作用:从序列类型中随机返回一个元素,序列类型包括列表、元组和字符串
  2. 参数:seq,一个序列类型变量
  3. 示例
>>> from random import *
>>> choice('hello world')
'r'
>>> choice([2,3,4,5,6])
5
>>> choice((1,'python'))
'python'

2.2.8 shuffle(seq)

  1. 作用:将序列类型中的元素随机排列,返回打乱后的序列(主要为列表)
  2. 特点:由于排序后对原有变量进行重写,所以该函数不能作用于不可变序列,即主要用于列表类型
  3. 参数:seq,一个列表变量
  4. 示例
>>> 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)

  1. 作用:从pop表示的组合数据类型中随机选取k个元素,以列表类型返回。
  2. 注意pop中所含的元素要不少于k个
  3. 参数:seq,一个组合数据类型,如列表、集合、元组、字符串等;k,一个整数
  4. 示例
>>> 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. 本文代码编译环境及版本

  1. Python IDLE
  2. Python 3.7

5. 更新日志

时间

内容

2023.2.8

首次发表