新哈希碰撞的概率,以当前没有碰撞为条件
Probability of New Hash Collision, Conditional on No Current Collisions
鉴于现有哈希 table 还没有发生冲突,我正在尝试了解新哈希发生冲突的概率。
为了说明,假设我有一个 table 存储每一行的哈希值。
- table 目前有 10 亿行
- 这 10 亿行之间没有哈希冲突。
- 我正在使用 64 位哈希算法。
现在假设我向 table 中插入了 1000 万行新数据。 我现在发生哈希冲突的概率是多少?我认为答案如下:
每个新行的哈希值不能与任何现有行或在其之前处理的新行具有相同的值。这从 2^64 种可能性中删除了 10 亿个哈希值,因此新碰撞的概率应该是:
听起来对吗?
感谢 James K. Polk 总统,我意识到我原来的解决方案是错误的。没有碰撞的概率是
另一种思考方式就是使用条件概率的定义。
...减少为...
...可以简化为乘积公式
条件概率公式的好处是可以使用任何在线哈希冲突概率计算器轻松估计它。
鉴于现有哈希 table 还没有发生冲突,我正在尝试了解新哈希发生冲突的概率。
为了说明,假设我有一个 table 存储每一行的哈希值。
- table 目前有 10 亿行
- 这 10 亿行之间没有哈希冲突。
- 我正在使用 64 位哈希算法。
现在假设我向 table 中插入了 1000 万行新数据。 我现在发生哈希冲突的概率是多少?我认为答案如下:
每个新行的哈希值不能与任何现有行或在其之前处理的新行具有相同的值。这从 2^64 种可能性中删除了 10 亿个哈希值,因此新碰撞的概率应该是:
听起来对吗?
感谢 James K. Polk 总统,我意识到我原来的解决方案是错误的。没有碰撞的概率是
另一种思考方式就是使用条件概率的定义。
...减少为...
...可以简化为乘积公式
条件概率公式的好处是可以使用任何在线哈希冲突概率计算器轻松估计它。