Hash 为什么在这些哈希表示例中John Smith和Sandra dee之间会发生冲突?
因此,在介绍哈希表或哈希函数时,一个非常流行的例子是John Smith等人的电话簿示例 我的问题是为什么约翰·史密斯和桑德拉·迪之间会发生冲突 看看这个例子 我认为(521+1234)mod256应该是152,这是很遥远的(它是219)。我知道这是为了演示碰撞,但为什么会有碰撞呢?散列函数中的公式是什么 编辑:还有另一个例子,它们都映射到2Hash 为什么在这些哈希表示例中John Smith和Sandra dee之间会发生冲突?,hash,hashmap,hashtable,Hash,Hashmap,Hashtable,因此,在介绍哈希表或哈希函数时,一个非常流行的例子是John Smith等人的电话簿示例 我的问题是为什么约翰·史密斯和桑德拉·迪之间会发生冲突 看看这个例子 我认为(521+1234)mod256应该是152,这是很遥远的(它是219)。我知道这是为了演示碰撞,但为什么会有碰撞呢?散列函数中的公式是什么 编辑:还有另一个例子,它们都映射到2 这些示例中没有哈希函数,它们只是人为设计的示例。散列完全是虚构的 生成的源代码是 如果您查看的内部,选择\u keys\u和\u hashes您将看到以
这些示例中没有哈希函数,它们只是人为设计的示例。散列完全是虚构的 生成的源代码是 如果您查看
的内部,选择\u keys\u和\u hashes
您将看到以下行:
tb.key_hsh = [ 152, 001, 254, 154, 153 ]
所以散列只是存储在一个数组中。接下来是几行:
if op.collisions :
# Make "Sandra Dee" collide with "John Smith":
tb.key_hsh[3] = tb.key_hsh[0]
所以“碰撞”完全是假的。第二个示例似乎是由同一个脚本生成的,其中nkeys=4
假装它比查找输入并使用哈希函数提供所需的输出要容易得多