我想使用哈希表比较每个b位数的b base-b数,以确定哪些是相同的。如果我使用模块化哈希函数,我应该使用h(a)= a mod(b)还是h(a)= mod(b-1)?我不知道如何确定这些是否合适。
答案 0 :(得分:0)
因此,b
... 0
范围内有b^b - 1
个数字(例如10
范围内的0
个数字... {{1 }})。
如果您想保证散列函数是无冲突的,则不能使用9999999999
。如果您使用例如mod
,然后a mod 10
和31
都会获得1的哈希并发生冲突,这种情况会发生在56465421
以下的每个模式中。
因此,您只能降低哈希冲突的概率。并且有机会避免碰撞的最小mod值是10000000000
(但很可能,你会遇到碰撞)。如果没有进行适当的概率计算,我会选择类似b
的内容,有效地获取两个尾随数字。