如何加速哈希函数的冲突率?

时间:2017-01-03 17:25:33

标签: hash-function murmurhash

鉴于有数十亿个cookie,UUID就像字符串一样,在这个样本上测试像murmur3这样的32位散列函数的碰撞率的最佳方法是什么?

首先,很难生成数十亿个唯一字符串,因为无法将其保存在内存中,并且没有100%精确的随机字符串生成器。

我能想到的只有:

  1. 生成它们并使用约。像bloomfilter或cuckoo过滤器这样的数据结构可以丢弃可能的重复项。然后我们就可以准确地说出存储在文件中的5B的唯一UUID。
  2. 遍历它们,哈希它们并用哈希码重复步骤1),同时计算有多少冲突。
  3. 有没有更好的方法呢?这仍有一个缺点,即在测试2)中的哈希码时存在一定的误报率。哈希码也必须写入文件,在可能出现误报的情况下进行手动检查。

2 个答案:

答案 0 :(得分:0)

这些震级的murmur_32碰撞率非常高......

只有100M独特的uuids恰好具有1.145577 %碰撞率...

Scala snippet

答案 1 :(得分:-2)

从英语词典中随机选择一个单词,提交给Google,然后使用返回的网址"随机"用于测试哈希函数的数据。