在 64 位 Python 2.7.6 中这是 True,但在 32 位 Python 2.7.3 中它是 False:
random.Random(hash("a")).random() == random.Random("a").random()
那么 Python 2.7.3 哈希字符串如何用于为随机数生成器提供种子?
最佳答案
这是因为在 32 位上 hash("a")
是一个负数(因为平台长类型大小)并且随机模块的行为不同。
随机模块 seed() 函数:
- 传递 int 或 long 它将使用
PyNumber_Absolute()
即abs()
- 传递一个对象(一个字符串)它将使用
PyLong_FromUnsignedLong((unsigned long)hash)
符号位截断和abs给出不同的结果
例如:
abs(-10) = 10
((unsigned long) -10) = 4294967286
关于python - Python 2.7.3 哈希字符串如何用于为随机数生成器提供种子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23260975/