Java 双散列常数5?

Java 双散列常数5?,java,hash,hashcode,double-hashing,Java,Hash,Hashcode,Double Hashing,我发现了大量的双哈希示例。所有示例都告诉我,在第二次哈希时必须使用%5 我的问题是为什么是5?这是一个协议,你总是使用5或如何工作 一个例子:否。第二个哈希函数可以是您想要的任何函数。理想情况下,它应该有均等的机会到达哈希数组的每个单元格 我的猜测是,您没有从其他来源查找任何双重哈希的示例。为了简单起见,您使用的源决定多次使用%5 不。第二个散列函数可以是您想要的任何函数。理想情况下,它应该有均等的机会到达哈希数组的每个单元格 我的猜测是,您没有从其他来源查找任何双重哈希的示例。为了简单起见,您

我发现了大量的双哈希示例。所有示例都告诉我,在第二次哈希时必须使用%5

我的问题是为什么是5?这是一个协议,你总是使用5或如何工作


一个例子:

否。第二个哈希函数可以是您想要的任何函数。理想情况下,它应该有均等的机会到达哈希数组的每个单元格


我的猜测是,您没有从其他来源查找任何双重哈希的示例。为了简单起见,您使用的源决定多次使用
%5

不。第二个散列函数可以是您想要的任何函数。理想情况下,它应该有均等的机会到达哈希数组的每个单元格


我的猜测是,您没有从其他来源查找任何双重哈希的示例。为了简单起见,您使用的源决定多次使用
%5

您并不总是使用5,甚至也不总是使用%

在您的示例中,%7和%5是散列函数。然而,在现实中,它们可能是完全不同的功能

本例使用%5,因为它对于本例来说足够简单。唯一真正的要求是这两个功能是独立的


请参阅。

您并不总是使用5,甚至也不总是使用%

在您的示例中,%7和%5是散列函数。然而,在现实中,它们可能是完全不同的功能

本例使用%5,因为它对于本例来说足够简单。唯一真正的要求是这两个功能是独立的


请参阅。

在有N个位置的哈希表中,使用两个独立的哈希函数h1(key)和h2(key),然后使用探测序列

h1%N,(h1+h2)%N,(h1+2*h2)%N,(h1+3*h2)%N

您需要确保h2和N的最大公约数为1,否则无法到达表中的所有位置

有几种方案可以实现这一点,例如:

  • 选择N作为素数,让h2在区间[1,N-1]中给出一个结果
  • 选择N作为2的幂,让h2在区间[1,N-1]中给出一个奇数

在一个有N个位置的哈希表中,使用两个独立的哈希函数h1(key)和h2(key),然后使用探测序列

h1%N,(h1+h2)%N,(h1+2*h2)%N,(h1+3*h2)%N

您需要确保h2和N的最大公约数为1,否则无法到达表中的所有位置

有几种方案可以实现这一点,例如:

  • 选择N作为素数,让h2在区间[1,N-1]中给出一个结果
  • 选择N作为2的幂,让h2在区间[1,N-1]中给出一个奇数

你到底在说什么???@MK看最后3个例子请至少举出一个例子…@MarcRasmussen听起来你想问你的塔塔助教。你到底在说什么???@MK看最后3个例子请举出至少一个例子…@MarcRasmussen听起来你想问你的塔塔-教学助理。您如何知道第二个哈希将能够应用于每个单元格?这完全取决于您将什么用作
。您如何知道第二个哈希将能够应用于每个单元格?这完全取决于您将什么用作
。N是什么?你能解释一下这个例子吗?N是哈希表的大小,即数组元素的数量。在你在问题N=7中提到的例子中,N是什么?你能解释一下这个例子吗?N是哈希表的大小,即数组元素的数量。在您在问题N=7中提到的示例中。