如何在散列函数中选取基数



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

我知道基数=一个数字系统的基数。

我看到,当我们在hash()函数中使用数字时,我们使用的基数是10。因为这是我们将使用的数字的基数。。易于理解的0,1,2,3,4,5,6,7,8,9.

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

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

从我看到的所有模式来看,我认为如果我们将字符串转换为ASCII代码,我们将使用ASCII中的字符数,我认为大约是127。

散列函数中的基数通常是素数,以实现最佳分布,或者是二次幂减一,以实现最快的计算。

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

相关内容

  • 没有找到相关文章

最新更新