你如何选择/哈希函数中的基数是什么?

时间:2015-11-01 07:24:25

标签: c++ hash radix

我已经看到37的Radix被大量使用,我只是想知道它代表什么。我正在将字符串转换为哈希函数的数字并且知道我们将使用37的基数具有 ascii 的数字值,我只是不知道为什么我们选择37作为基数,是这只是随机的?

我知道Radix =数字系统的基础。

我看到当我们只使用数字到hash()函数时,我们使用10的基数...因为我们将使用的数字的基数...简单.. 0,1,2,3,4 ,5,6,7,8,9。

字符串 - 我可以看到所有大写字母的字符串的基数(我假设没有空格)是26 ...因为字母表中有26个字母,我们将用数字0表示每个字母= A,1 = B,2 = C等

37这意味着什么,我读了一些关于31或33的东西。 我所阅读和理解的是,当我们处理空格,小写字母,数字和特殊情况时,我们使用26的不同基数。

从我看到的所有模式中我都会想到,如果我们将String转换为ASCII代码,我认为我会使用ASCII中的字符数,就像127一样。

1 个答案:

答案 0 :(得分:0)

哈希函数中的基数通常是素数,为了得到最佳分布,或者为2减去1的幂,以便最快地计算。

31和37是哈希函数中乘法的常用素数,而不是基数:它们太小了。