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

python 随机数 概率 python中随机数怎么用_随机数

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

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

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

python 随机数 概率 python中随机数怎么用_Python_02

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

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

python 随机数 概率 python中随机数怎么用_Python_03

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

python 随机数 概率 python中随机数怎么用_Python_04

生成 a 与 b 之间的浮点数

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

python 随机数 概率 python中随机数怎么用_浮点数_05

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

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

python 随机数 概率 python中随机数怎么用_python中的随机数_06

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

python 随机数 概率 python中随机数怎么用_python中的随机数_07

打乱列表中元素的顺序

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

python 随机数 概率 python中随机数怎么用_python 随机数 概率_08

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

python 随机数 概率 python中随机数怎么用_浮点数_09

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

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

python 随机数 概率 python中随机数怎么用_python中的随机数_10

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

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

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

python 随机数 概率 python中随机数怎么用_浮点数_11

python 随机数 概率 python中随机数怎么用_Python_12

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

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