python中的random.SystemRandom().choice()和random.choice()有什么不同?
我在不止一个地方有seen the former being used。但它没有提到py2或py3文档。
发布于 2019-12-25 05:40:16
random.SystemRandom是一个用于加密的随机数生成器类。它使用os.urandom作为底层字节流;os.urandom从依赖于操作系统的加密随机数源中提取,有时是/dev/urandom (但并不总是如此,即使/dev/urandom存在。
SystemRandom类提供了random模块自己执行的所有随机数生成方法,其含义相同,只是使用密码学RNG来实现它们。random.choice和SystemRandom实例的choice方法都从输入序列中随机选择,但只有SystemRandom适合加密使用。对手可以毫不费力地预测到random.choice的选择。
发布于 2019-12-25 05:17:53
在documentation for random.choice()中,它从作为参数提供给函数的序列中返回一个随机元素。如果序列不存在,则返回错误。正确的函数调用是
random.choice(someSequence)在同一个页面中,您可以看到random.SystemRandom()只是一个从操作系统资源生成随机数的替代生成器,并不是在所有系统上都可用。
https://stackoverflow.com/questions/59473439
复制相似问题