您对选择在(乘法)哈希函数中使用的乘数有什么建议/规则吗?该函数正在计算字符串的哈希值。

有帮助吗?

解决方案

您想要使用与您的集合大小相对素数的东西。这样,当您循环时,您将不会得到与刚刚尝试过的相同的数字。

其他提示

最近我和一位同事就哈希函数进行了一次有趣的讨论。我们的结论如下:

如果您确实需要编写一个好的哈希函数来最大限度地减少冲突,而不是标准语言中可用的默认实现,那么您需要数学高级学位。

如果您正在编写自定义哈希函数将显着提高应用程序性能的应用程序,那么您就是 Google,并且有大量数学博士来完成这项工作。

很抱歉没有直接回答您的问题,但最重要的是,实际上没有必要为 String 编写自己的哈希函数。您使用什么语言?我想有一种简单的方法来计算“足够好”的哈希码。

从历史上看,33 似乎是一个流行的选择,而且效果往往相当好。但没有人知道为什么。更多细节, 看这里

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top