Python中的random.SystemRandom().choice()
和random.choice()
有什么区别?
我在多个地方有seen the former being used。但是它没有提到py2或py3文档。
答案 0 :(得分:3)
random.SystemRandom
是旨在用于加密的随机数生成器类。它使用os.urandom
作为其基础字节流; os.urandom
从依赖于操作系统的加密随机数源中提取,有时是/dev/urandom
(但并非总是如此,即使存在/dev/urandom
也是这样。
SystemRandom
类提供了random
模块本身所做的所有随机数生成方法,具有相同的含义,只是使用加密RNG来实现它们。 random.choice
实例的choice
和SystemRandom
方法都可以从输入序列中随机选择,但是只有SystemRandom
适合加密用途。 random.choice
的选择可以由对手轻松预测。
答案 1 :(得分:-1)
它从documentation for random.choice()
返回作为参数提供给函数的序列中的随机元素。如果序列不存在,则返回错误。正确的函数调用是
random.choice(someSequence)
在同一页面上,您可以看到random.SystemRandom()只是一个替代生成器,它从操作系统资源生成随机数,并且并非在所有系统上都可用。