Hash 哈希函数将键与常量相乘

Hash 哈希函数将键与常量相乘,hash,key,hashtable,hash-function,Hash,Key,Hashtable,Hash Function,公式中键前的常数如何: h(k) = (const * key) % m, 是否影响表中哈希值的分布 关于如何选择这样一个常数来最小化冲突并在哈希表中获得键的均匀分布,有什么规则吗?常数因子应该是素数,如果我没记错的话,它应该是相对素数w.r.t.模。Knuth第三卷对此进行了详细讨论。这在很大程度上取决于关键值的分布。如果键均匀分布,则几乎没有理由使用除1以外的任何常量。关于规则,第一件事是避免模的除数。例如,如果m可被const整除,则某些哈希表存储桶将永远不会被命中。

公式中键前的常数如何:

h(k) = (const * key) % m,
是否影响表中哈希值的分布


关于如何选择这样一个常数来最小化冲突并在哈希表中获得键的均匀分布,有什么规则吗?

常数因子应该是素数,如果我没记错的话,它应该是相对素数w.r.t.模。Knuth第三卷对此进行了详细讨论。

这在很大程度上取决于
关键值的分布。如果
均匀分布,则几乎没有理由使用除1以外的任何
常量。关于规则,第一件事是避免模的除数。例如,如果
m
可被
const
整除,则某些哈希表存储桶将永远不会被命中。