Knuth's乘法的好价值 - 哈希

时间:2017-03-30 21:20:32

标签: hash

任何猜测" c"?

的好价值
// h(k) = ⌊(m · (k · c − ⌊k · c⌋)⌋
return (int) Math.floor(distinctElements * (key * c - Math.floor(key * c)));

我找到了这个:(Math.sqrt(5)-1)/ 2)

然而,还有其他任何好的选择吗?

亲切的问候

1 个答案:

答案 0 :(得分:0)

您找到的值是称为phi(φ)的数字golden ratio。使用它实际上并不正确......你应该使用的是它的乘法逆,φ^ -1。 φ^ -1和φ^ -2具有特殊属性,无论输入的范围如何,都倾向于最优地展开散列值。

但是,对于足够大的范围,几乎任何无理数都可以。