与random.seed()一起使用的建议种子值是多少?

AJ.*_*AJ. 4 python random

问题很简单:

我正在使用python random模块生成随机整数.我想知道random.seed()函数使用的建议值是多少?目前我将此默认设置为当前时间,但这并不理想.看起来字符串文字常量(类似于密码)也不是理想/强大

建议?

谢谢,-aj


更新:

我生成随机整数的原因是为了生成测试数据.这些数字不需要是可重复的.

Jed*_*ith 13

根据以下文件random.seed:

如果省略x或None,则使用当前系统时间; 当前系统时间也用于在首次导入模块时初始化生成器.如果操作系统提供随机源,则使用它们而不是系统时间(os.urandom()有关可用性的详细信息,请参阅函数).

如果你没有将某些内容传递给种子,它将尝试使用操作系统提供的随机源而不是时间,这总是更好的选择.这可以为您节省一些工作,并且可以达到最佳效果.关于可用性,文档os.urandom告诉我们:

在类UNIX系统上,这将查询/ dev/urandom,在Windows上,它将使用CryptGenRandom.

跨平台随机种子是这里的重大胜利; 您可以安全地省略种子并相信它几乎在您将使用Python的每个平台上都是随机的.即使Python回归到时间,也可能只有一毫秒的窗口(或更少)来猜测种子.我不认为你使用当前时间会遇到任何麻烦 - 即便如此,它只是一个后备.

  • 始终使用urandom:http://sockpuppet.org/blog/2014/02/25/safely-generate-random-numbers/ (2认同)

gro*_*kus 5

对于大多数情况下使用当前时间已经足够了.有时,您需要使用固定数字生成伪随机数以进行比较.