random.SystemRandom()。choice()与random.choice()

时间:2019-12-24 21:12:19

标签: python python-3.x

Python中的random.SystemRandom().choice()random.choice()有什么区别?

我在多个地方有seen the former being used。但是它没有提到py2py3文档。

2 个答案:

答案 0 :(得分:3)

random.SystemRandom是旨在用于加密的随机数生成器类。它使用os.urandom作为其基础字节流; os.urandom从依赖于操作系统的加密随机数源中提取,有时是/dev/urandom(但并非总是如此,即使存在/dev/urandom也是这样。

SystemRandom类提供了random模块本身所做的所有随机数生成方法,具有相同的含义,只是使用加密RNG来实现它们。 random.choice实例的choiceSystemRandom方法都可以从输入序列中随机选择,但是只有SystemRandom适合加密用途。 random.choice的选择可以由对手轻松预测。

答案 1 :(得分:-1)

它从documentation for random.choice()返回作为参数提供给函数的序列中的随机元素。如果序列不存在,则返回错误。正确的函数调用是

random.choice(someSequence)

在同一页面上,您可以看到random.SystemRandom()只是一个替代生成器,它从操作系统资源生成随机数,并且并非在所有系统上都可用。