鉴于有数十亿个 cookie,像字符串一样的 UUID,在这个样本上测试 murmur3 等 32 位哈希函数的冲突率的最佳方法是什么?
首先,很难生成数十亿个唯一字符串,因为不可能将其保存在内存中,并且没有 100% 精确的随机字符串生成器。
我能想到的唯一方法是:
- 生成它们并使用大约。像bloomfilter或cuckoo过滤器这样的数据结构来丢弃可能的重复项。然后我们会说存储在一个文件中的唯一 UUID 正好是 5B。
- 遍历它们,散列它们并使用散列码重复步骤 1),同时计算有多少冲突。
有没有更好的方法来做到这一点?这样做还有一个缺点,就是在测试2)中的哈希码时,会有一定的误报率。哈希码也必须写入文件,在可能的误报命中的情况下手动检查。