次のハッシュ関数を使用しています
function hash_djb2($str){
$hash = 5381;
$length = strlen($str);
for($i = 0; $i < $length; $i++) {
$hash = (($hash << 5) + $hash) + ord(strtolower($str[$i])) - 96;
}
return $hash;
}
ハッシュテーブルのバケット数はどこにあるのでしょう$hash
か?$hash % $numBuckets
$numBuckets
前者は非常に大きな数を返し、ハッシュの衝突を不可能にしますが、後者は 0 から$numBuckets
-1 の間の値のみを返しますが、ハッシュの衝突は可能にします