Démystifier le nombre magique dans boost::hash_combine
La fonction de modèle boost::hash_combine combine une graine de hachage avec un objet pour générer un valeur de hachage. Bien que le processus soit déterministe, l'utilisation d'une constante magique a soulevé des questions quant à son objectif.
Raison d'être de la constante
La constante magique, 0x9e3779b9, est dérivée de l'inverse du nombre d'or. Ce nombre a été choisi car il fournit 32 bits aléatoires où chaque bit a une probabilité égale d'être 0 ou 1. L'inclusion de cette constante introduit le caractère aléatoire et permet de répartir uniformément les valeurs de hachage, empêchant ainsi le regroupement dans les tables de hachage.
Shifted Seed
En plus de la constante magique, la fonction hash_combine intègre également des versions décalées de l'ancienne graine. Cela garantit que même si la valeur de hachage de l'objet a une plage limitée, les différences entre les valeurs se propagent rapidement sur tous les bits.
En combinant la constante magique et la graine décalée, la fonction hash_combine crée une fonction de hachage plus efficace qui minimise collisions et améliore les performances des tables de hachage.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!