我经常看到或听到模数被用作哈希的最后一步,或在哈希之后使用。例如,
h(input)%N
,其中h
是哈希函数,%
是模运算符。如果我正在设计一个哈希表,并希望将大量的键映射到较小的索引空间以供哈希表使用,那么模运算符不就可以实现这个目的吗?此外,如果我想在哈希表中的这些位置上随机分布,那么模数生成的余数是否足够了?那么哈希函数h
提供了什么额外的功能呢?
number % N
中的多个N
倍数重叠,输出就不会均匀分布。然而,我确实理解你提到的伪随机有助于防止可能导致碰撞的具有可能模式的不可预测输入流的观点。 - imagineerThatchar
值[A-Z]
,那么您不需要超过 26 个存储桶 - 实际上,您可以跳过使用哈希表,而直接使用可直接索引的固定大小数组。 - Dai