找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2677|回复: 12

玩转 Python 中的随机数

 火.. [复制链接]
  • 打卡等级:常驻代表
  • 打卡总天数:34
  • 打卡月天数:6
  • 打卡总奖励:9027
  • 最近打卡:2025-12-17 23:15:51

2823

主题

541

回帖

2万

积分

管理员

积分
22569
发表于 2019-11-13 20:02:47 | 显示全部楼层 |阅读模式
开发中我们经常遇到需要随机数的场景,比如为了用户密码更安全我们有时会加盐,也就是将用户原密码连接上一串随机字符然后加密保存,又比如我们可能需要随机展示某张图片等等。今天,我们就来理一理 Python 中的随机数的玩法,当然,这里只涉及标准库。
随机生成 0 到 1 之间的浮点数
random.random() 方法会返回 [0.0, 1.0) 之间的浮点数,注意,这是一个左闭右开的区间,随机数可能会是 0 但不可能为 1 。
随机生成 a 与 b 之间的整数
使用 random.randint(a , b) 方法,你可以生成一个 a 与 b 之间的随机整数,也就是 [a, b] 。
当然,如果你想要生成的随机整数不会包含 b ,也即 [a, b) , 你可以使用 random.randrange() 方法。
生成 a 与 b 之间的浮点数
如果你需要生成 [a, b] 之间的随机浮点数,那么 random.uniform(a, b) 会满足你的需求。
从列表中随机取出一个元素
如果你想从序列类型中随机取出一个元素,比如列表、元祖、字符串等,random.choice() 是一个不错的选择。
需要注意的是,该方法需要参数非空,不然会抛出 IndexError 的错误。
打乱列表中元素的顺序
使用 random.shuffle(items) 方法可以帮你把序列 items 中的元素随机打乱。
如果你不想修改原来的列表,你可以使用 copy 模块先拷贝一份原来的列表
从列表中随机取出 n 个元素
使用 random.sample(items, n) 方法可以从序列 items 中随机取出 n 个元素。

生成密码学安全的伪随机数
什么是密码学安全的伪随机数,请看维基百科( http://dwz.cn/7JhRN5 )。不过暂时不需要深入的话,理解为比普通随机数更随机的技术就好。
如果你需要生成密码学安全的随机数,你可以通过 random.SystemRandom 类实现。random.SystemRandom 实例化后的对象拥有与 random 类似的方法。
如果 Python 版本在 3.6 及以上,可以使用 secrets 模块
通过 secrets 模块,同样也能生成密码学安全的随机数。并且,利用它生成一些特定的秘钥特别方便。

工控课堂 www.gkket.com

0

主题

1451

回帖

4571

积分

金牌会员

积分
4571
发表于 2019-11-13 22:52:17 | 显示全部楼层
激动人心,无法言表!
工控课堂 www.gkket.com

0

主题

121

回帖

454

积分

注册会员

积分
454
发表于 2020-10-13 06:26:38 | 显示全部楼层
无回帖,不论坛,这才是人道。
工控课堂 www.gkket.com

0

主题

304

回帖

1016

积分

中级会员

积分
1016
发表于 2025-11-15 03:27:53 | 显示全部楼层
打卡路过,支持优质原创内容~
工控课堂 www.gkket.com

0

主题

108

回帖

163

积分

新手上路

积分
163
发表于 2025-11-16 22:56:01 | 显示全部楼层
浅蹲一个后续,楼主更新踢我一下
工控课堂 www.gkket.com

0

主题

99

回帖

153

积分

新手上路

积分
153
发表于 2025-11-17 08:27:40 | 显示全部楼层
理性围观,感觉大家说的都有道理~
工控课堂 www.gkket.com

0

主题

717

回帖

2166

积分

高级会员

积分
2166
发表于 2025-11-17 08:44:12 | 显示全部楼层
楼主太会说了,字字句句都在理~
工控课堂 www.gkket.com
  • 打卡等级:热心大叔
  • 打卡总天数:358
  • 打卡月天数:0
  • 打卡总奖励:13383
  • 最近打卡:2025-11-30 14:58:29

0

主题

98

回帖

3万

积分

论坛元老

积分
31034
发表于 2025-11-17 08:48:12 | 显示全部楼层
不请自来,就想夸一句:太顶了!
工控课堂 www.gkket.com

0

主题

101

回帖

143

积分

新手上路

积分
143
发表于 2025-11-17 08:53:04 | 显示全部楼层
占个楼慢慢看,先马克一下
楼主辛苦啦,期待下一篇分享
工控课堂 www.gkket.com

0

主题

131

回帖

329

积分

注册会员

积分
329
发表于 2025-11-17 08:53:25 | 显示全部楼层
笑不活了,评论区比正文还精彩
已转发给朋友,一起快乐一下
工控课堂 www.gkket.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|手机版|免责声明|本站介绍|工控课堂 ( 沪ICP备20008691号-1 )

GMT+8, 2025-12-23 07:51 , Processed in 0.183455 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表