哪种整数哈希函数可以接受整数哈希键?
Knuth的乘法方法:
hash(i)=i*2654435761 mod 2^32
通常,您应该选择一个按哈希大小顺序排列的乘数(2^32在示例中),并且没有公因子。这样,哈希函数可以均匀地覆盖您的所有哈希空间。
2^32
编辑:此哈希函数的最大缺点是它保留了可除性,因此,如果您的整数都可以被2或4整除(这并不罕见),则它们的哈希也将被整除。这是哈希表中的问题- 最终只能使用1/2或1/4个存储桶。