【发布时间】:2016-12-19 17:25:23
【问题描述】:
在Python 2 documentation of the random.seed() 函数中我发现了一个警告:
如果给定一个可散列的对象,则只有确定性的结果才能得到保证 当 PYTHONHASHSEED 被禁用时。
从https://docs.python.org/2/using/cmdline.html#envvar-PYTHONHASHSEED我推断解释器的-R开关可能和PYTHONHASHSEED有类似的效果。
我已经通过经验验证,以小整数为种子的随机数似乎是可重现的。小整数的哈希也是如此。
但是,int 是可散列的。是否在任何受信任的来源中明确声明,将其用作可重现的随机数序列的种子是安全的?
与Reproducibility of python pseudo-random numbers across systems and versions? 相比,在同一系统和解释器中的可重复性就足够了。
【问题讨论】:
-
我认为这是一个文档缺陷;它应该说整数和长整数没有散列。无论如何,此时 Python 2 的实现不太可能发生变化,Python 3 documentation 提到直接使用 int(Python 2 长整数)。
标签: python python-2.7 random deterministic reproducible-research