2008-08-19 35 views
12

您是否有任何關於選擇用於(乘法)散列函數的乘數的建議/規則?該函數計算一個字符串的散列值。爲(字符串)散列函數選擇乘數

+24

以下頁面提供了一些通用散列函數的實現,這些散列函數高效並且表現出最小的衝突:http://partow.net/programming/hashfunctions/index.html – 2010-10-31 23:11:12

回答

3

你想用的東西,是相對素的集合的大小。這樣,當你循環時,你不會以剛剛嘗試過的相同數字結束。

1

從歷史上看,33似乎是一個流行的選擇,它往往工作得很好。然而,沒有人知道爲什麼。有關詳細信息,look here

2

最近我和一位同事就哈希函數進行了一次有趣的討論。我們的結論如下:

如果你真的需要編寫減少比你需要在數學的先進程度的標準語言提供的默認實現更多的碰撞好的哈希函數。

如果你正在編寫的應用程序,其中一個自定義的哈希函數將顯着提高應用程序的性能,你是谷歌和你有足夠的數學博士做的工作。

對不起,沒有直接回答你的問題,但底線是,有實在沒有必要寫自己的哈希函數的字符串。你在用什麼語言?我會想象有一個簡單的方法來計算「足夠好」的哈希碼。