以下整数中的以下哪一个哈希函数将在i的0到2020范围内的10个存储桶(编号为0到9)中最均匀地分配密钥?
(A) h(i)= i 2 mod 10
(B) h(i)= i 3 mod 10
(C) h(i)=(11 ∗ i 2 )mod 10
(D) h(i)=(12 ∗ i)mod 10答案: (B)
说明:由于使用了mod 10,因此最后一位数字很重要。
如果对所有从0到9的数字求立方,则会得到以下结果
Number Cube Last Digit in Cube
0 0 0
1 1 1
2 8 8
3 27 7
4 64 4
5 125 5
6 216 6
7 343 3
8 512 2
9 729 9
因此,从0到2020的所有数字均分为10个存储桶。如果我们为正方形制作一张桌子,我们就不会得到均等的分布。在下表中。重复1、4、6和9,因此这些存储桶将有更多条目,而存储桶2、3、7和8将为空。
Number Square Last Digit in Cube
0 0 0
1 1 1
2 4 4
3 9 9
4 16 6
5 25 5
6 36 6
7 49 9
8 64 4
9 81 1
替代方法–
使用循环功率的概念:
(a)重复(0,1,4,9,6,5,6,9,4,1,0)
(b)重复(0,1,8,7,4,5,6,3,2,9)
(c)重复(0,1,4,9,6,5,6,9,4,1,0)
(d)重复(0,2,4,6,8)
因此,只有h(i)= i 3 mod 10涵盖了从0到9的所有数字。
选项(B)是正确的。
这个问题的测验