如何计算64位哈希冲突的风险?

dan*_*jar 5 hash uuid types conflict bit

我的应用程序需要全局唯一 ID。我知道有一个 UUID 标准,但我想知道我是否真的需要 128 位。

因此,我考虑编写自己的生成器,它使用系统时间、随机数和机器网络地址来生成适合 64 位的 id,因此可以存储在unsigned long long intC++ 的数据类型中。

如何确定 64 位对我来说是否足够?

Vis*_*ean 6

64 位运行大约 18,446,744,073,709,551,616 种组合,大约是 18 5 亿。

因此,如果您生成 192 万个哈希值,则发生冲突的几率将为千万分之一

概率备忘单

来源: http: //preshing.com/20110504/hash-collision-probabilities