DJB哈希函数中5381号的原因?
谁能告诉我为什么DJB哈希函数中使用数字5381?
DJB哈希函数是
h(0)= 5381
h(i)= 33 * h(i-1)^ str [i]
一个c程序:
unsigned int DJBHash(char* str, unsigned int len){
unsigned int hash = 5381;
unsigned int i = 0;
for(i = 0; i < len; str++, i++)
{
hash = ((hash << 5) + hash) + (*str);
}
return hash;
}
回答:
5381只是在测试中导致更少的碰撞和更好的雪崩数量。您几乎可以在每个哈希算法中找到“魔术常数”。
以上是 DJB哈希函数中5381号的原因? 的全部内容, 来源链接: utcz.com/qa/424243.html