2008-08-19 95 views
12

您是否有任何关于选择用于(乘法)散列函数的乘数的建议/规则?该函数计算一个字符串的散列值。为(字符串)散列函数选择乘数

+24

以下页面提供了一些通用散列函数的实现,这些散列函数高效并且表现出最小的冲突:http://partow.net/programming/hashfunctions/index.html – 2010-10-31 23:11:12

回答

3

你想用的东西,是相对素的集合的大小。这样,当你循环时,你不会以刚刚尝试过的相同数字结束。

1

从历史上看,33似乎是一个流行的选择,它往往工作得很好。然而,没有人知道为什么。有关详细信息,look here

2

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

如果你真的需要编写减少比你需要在数学的先进程度的标准语言提供的默认实现更多的碰撞好的哈希函数。

如果你正在编写的应用程序,其中一个自定义的哈希函数将显着提高应用程序的性能,你是谷歌和你有足够的数学博士做的工作。

对不起,没有直接回答你的问题,但底线是,有实在没有必要写自己的哈希函数的字符串。你在用什么语言?我会想象有一个简单的方法来计算“足够好”的哈希码。