gpt4 book ai didi

c++ - 你如何选择/什么是散列函数中的基数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:48:37 24 4
gpt4 key购买 nike

我经常看到 37 的基数被使用,我只是想知道它代表什么。我正在将字符串转换为散列函数的数字,并且知道我们将使用 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 是哈希函数中乘法常用的质数,而不是基数:它们太小了。

关于c++ - 你如何选择/什么是散列函数中的基数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33460099/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com