您对选择在(乘法)散列函数中使用的乘数有任何建议/规则吗?该函数正在计算字符串的哈希值。
答案 0 :(得分:3)
您希望使用与您的集合大小相对较高的内容。这样,当你循环时,你不会得到你刚试过的相同数字。
答案 1 :(得分:2)
我最近与一位同事就哈希函数进行了一次有趣的讨论。我们的结论如下:
如果你真的需要编写一个好的哈希函数来最大限度地减少冲突,而不是标准语言中提供的默认实现,你需要一个高级数学学位。
如果您正在编写应用程序,其中自定义哈希函数将显着提高应用程序的性能,那么您就是Google,并且您已经拥有大量的数学博士来完成这项工作。
很抱歉没有直接回答你的问题,但最重要的是,确实没有必要为String编写自己的哈希函数。你和哪种语言一起工作?我想有一种简单的方法来计算“足够好”的哈希码。
答案 2 :(得分:1)
历史上33似乎是一个受欢迎的选择,它往往效果很好。没有人知道为什么。有关详细信息,请look here