14

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

4

3 回答 3

3

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

于 2008-08-19T20:36:07.493 回答
2

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

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

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

很抱歉没有直接回答你的问题,但底线是真的没有必要为 String 编写自己的哈希函数。你用什么语言工作?我想有一种简单的方法来计算“足够好”的哈希码。

于 2008-08-19T20:37:40.703 回答
1

从历史上看,33 似乎是一个受欢迎的选择,而且它往往工作得很好。没有人知道为什么。更多详情,请看这里

于 2008-08-19T20:33:11.040 回答