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)
,因为那是一个字节的大小。
答案
返回一个随机整数N,使得a <= N <= b。 randrange的别名(a,b + 1)。
所以它是包容性的,你可以获得比字节大的东西。
另一答案
使用secret
模块!
来自文档:
secrets
模块用于生成适用于管理密码,帐户身份验证,安全令牌和相关机密等数据的加密强随机数。
特别是,secret
s应优先于random
模块中的默认伪随机数生成器使用,qazxswpoi模块专为建模和模拟而非安全或加密而设计。
以上是关于python中的随机数生成的主要内容,如果未能解决你的问题,请参考以下文章
python基础2:随机数生成—random模块、numpy中的random函数
Python 随机产生[0,100]以内的随机数,找到最大值和最小值并交换位置