web-dev-qa-db-ja.com

Pythonの無限大のハッシュにπの数字があるのはなぜですか?

Pythonの無限のハッシュには、一致する数字があります pi

>>> inf = float('inf')
>>> hash(inf)
314159
>>> int(math.pi*1e5)
314159

それは単なる偶然ですか、それとも意図的なものですか?

240
wim

_PyHASH_INF定数として定義314159と同じです。

私はこれについての議論、または理由を与えるコメントを見つけることができません。多かれ少なかれarbitrarily意的に選ばれたと思います。他のハッシュに同じ意味のある値を使用しない限り、それは問題ではないと思います。

46
Patrick Haugh

確かに、

sys.hash_info.inf

314159を返します。値は生成されず、ソースコードに組み込まれます。実際には、

hash(float('-inf'))

python 2で-271828またはおよそ-eを返します( 現在は-314159です )。

ハッシュ値として史上最も有名な2つの無理数が使用されているという事実は、偶然ではない可能性が非常に高くなります。

12
Alec Alameddine