python中的随机数生成

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中的随机数生成相关的知识,希望对你有一定的参考价值。

这是生成加密随机的n随机字节的有效方法吗?

def cryptographically_secure_random_bytes(n):
    return ''.join(chr(random.SystemRandom().randint(0,256)) for _ in range(n))

我知道random.SystemRandom()os.urandom()相同,我知道os.urandom()绝对是一种产生随机数的加密安全方式。

但是,chr(random.SystemRandom().randint(0,256))部分让我失望了。由于chr()不支持unicode,我假设这个函数丢弃了一些否则将由random.SystemRandom()生成的字符。

我不知道怎么想randint(0,256),因为那是一个字节的大小。

答案

random.randint(a, b)

返回一个随机整数N,使得a <= N <= b。 randrange的别名(a,b + 1)。

所以它是包容性的,你可以获得比字节大的东西。

另一答案

使用secret模块!

来自文档:

secrets模块用于生成适用于管理密码,帐户身份验证,安全令牌和相关机密等数据的加密强随机数。

特别是,secrets应优先于random模块中的默认伪随机数生成器使用,qazxswpoi模块专为建模和模拟而非安全或加密而设计。

以上是关于python中的随机数生成的主要内容,如果未能解决你的问题,请参考以下文章

python中的随机数生成

python基础2:随机数生成—random模块、numpy中的random函数

python随机生成两个数字

Python 随机产生[0,100]以内的随机数,找到最大值和最小值并交换位置

Python 和 C++ 下字符串查找速度对比,你觉得Python适合算法竞赛吗

随机生成验证码及python中的事务