【干货】Python:random库的用法

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. 习题

个人整理了一些Python习题与相应的解析,可见专栏:Python编程习题

4. 本文代码编译环境及版本

  1. Python IDLE
  2. Python 3.7

5. 更新日志

时间内容
2023.2.8首次发表

6. 参考

[1] https://zhidao.baidu.com/question/1583074463275510340.html
[2] 《全国计算机等级考试二级教程Python语言程序设计(2022年版)》

编辑不易,点赞收藏关注!

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

调参侠鱼尾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值