Nat*_*eit 9 python random python-2.7
在64位Python 2.7.6中,这是真的,但在32位Python 2.7.3中,它是错误的:
random.Random(hash("a")).random() == random.Random("a").random()
Run Code Online (Sandbox Code Playgroud)
那么Python 2.7.3哈希字符串如何用于种子随机数生成器呢?
这是因为在32位hash("a")是负数(因为平台长类型大小),随机模块的行为不同.
随机模块seed()函数:
PyNumber_Absolute()它abs()PyLong_FromUnsignedLong((unsigned long)hash)符号位截断和abs给出不同的结果
例如:
abs(-10) = 10((unsigned long) -10) = 4294967286