【发布时间】:2011-12-12 10:58:30
【问题描述】:
使用 10 个字符的哈希值来识别电子邮件地址的可靠性如何?
MailChimp 有 10 个字符的字母数字 ID 用于电子邮件地址。 10 个字符 4 位,每个 40 位,略超过一万亿。也许对于像 MailChimp 这样规模的企业来说,这为唯一索引空间提供了合理的空间,并且他们有一个包含所有可能电子邮件的表,并使用 40 位数字进行索引。
我喜欢使用相同样式的哈希或编码 ID 来包含在链接中。要决定是使用索引还是哈希,需要估计两个有效电子邮件地址导致相同 10 字符哈希的概率。
除了原始测试之外,任何关于评估自定义散列函数的提示?
【问题讨论】:
-
Google 生日悖论。对于 40 位散列,如果项目数接近 20 位(~2E6),则冲突几率达到 0.5(即:整个集合至少发生一次冲突的几率为 0.5)
-
@wildpasser 感谢生日悖论的提示!
-
任何位键的改变都应该改变散列函数的行为。 burtleburtle.net/bob/hash/doobs.html
标签: algorithm email hash mailchimp