python中的随机数_玩转 Python 中的随机数

原标题:玩转 Python 中的随机数

01d41c0bc69d40a1abc4249843fa8d6b.jpeg

开发中我们经常遇到需要随机数的场景,比如为了用户密码更安全我们有时会加盐,也就是将用户原密码连接上一串随机字符然后加密保存,又比如我们可能需要随机展示某张图片等等。今天,我们就来理一理 Python 中的随机数的玩法,当然,这里只涉及标准库。

随机生成 0 到 1 之间的浮点数

random.random 方法会返回 [0.0, 1.0) 之间的浮点数,注意,这是一个左闭右开的区间,随机数可能会是 0 但不可能为 1 。

56323abd1edd4cf8a7854d653b65d649.jpeg

随机生成 a 与 b 之间的整数

使用 random.randint(a , b) 方法,你可以生成一个 a 与 b 之间的随机整数,也就是 [a, b] 。

6b17d893b77d4896b6f7871a58be790f.jpeg

当然,如果你想要生成的随机整数不会包含 b ,也即 [a, b) , 你可以使用 random.randrange 方法。

76e766259e864ad1a31b255572ffcf80.jpeg

生成 a 与 b 之间的浮点数

如果你需要生成 [a, b] 之间的随机浮点数,那么 random.uniform(a, b) 会满足你的需求。

04a7268d7de6495fac6659f5b9861d54.jpeg

从列表中随机取出一个元素

如果你想从序列类型中随机取出一个元素,比如列表、元祖、字符串等,random.choice 是一个不错的选择。

3a65c1878f6840c9b57c3415de5b59eb.jpeg

需要注意的是,该方法需要参数非空,不然会抛出 IndexError 的错误。

07d2817d8c854c7d805de9b610240f23.jpeg

打乱列表中元素的顺序

使用 random.shuffle(items) 方法可以帮你把序列 items 中的元素随机打乱。

96d11c2622be4506a36c6fd8a6cfb66b.jpeg

如果你不想修改原来的列表,你可以使用 copy 模块先拷贝一份原来的列表

b6fdd7700f534ca0a3b3d4db5624ee85.jpeg

从列表中随机取出 n 个元素

使用 random.sample(items, n) 方法可以从序列 items 中随机取出 n 个元素。

d0a02f978c68464893e251231eabf059.jpeg

生成密码学安全的伪随机数

什么是密码学安全的伪随机数,请看维基百科( http://dwz.cn/7JhRN5 )。不过暂时不需要深入的话,理解为比普通随机数更随机的技术就好。

如果你需要生成密码学安全的随机数,你可以通过 random.SystemRandom 类实现。random.SystemRandom 实例化后的对象拥有与 random 类似的方法。

f26e64d1a32f4cc4893897dfc63bfb61.jpeg

4d21faa3d2c04d02898de6d09beb9965.jpeg

如果 Python 版本在 3.6 及以上,可以使用 secrets 模块

通过 secrets 模块,同样也能生成密码学安全的随机数。并且,利用它生成一些特定的秘钥特别方便。返回搜狐,查看更多

责任编辑:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值