Je voudrais savoir s'il existe une fonction des nombres à n bits aux nombres à n bits qui présente les caractéristiques suivantes:
- doit être bijectif
- Les deux et devrait être assez rapide calculable
- doit renvoyer un nombre qui n'a pas de corrélation significative avec son entrée.
La justification est la suivante:
Je veux écrire un programme qui fonctionne sur des données. Certaines informations des données sont stockées dans une arborescence de recherche binaire où la clé de recherche est un symbole d'un alphabet. Avec le temps, j'ajoute d'autres symboles à l'alphabet. Les nouveaux symboles obtiennent simplement le prochain numéro gratuit disponible. Par conséquent, l'arborescence aura toujours un petit biais vers des touches plus petites, ce qui provoque un rééquilibrage plus important que je ne le pense.
Mon idée est de réduire les nombres de symboles avec telle sorte qu'ils soient largement répartis sur toute la plage de . Étant donné que les numéros de symbole n'ont d'importance que lors de l'entrée et de la sortie, ce qui ne se produit qu'une seule fois, l'application d'une telle fonction ne devrait pas être trop coûteuse.[ 0 , 2 64 - 1 ]
J'ai pensé à une itération du générateur de nombres aléatoires Xorshift, mais je ne connais pas vraiment un moyen de l'annuler, bien que cela devrait théoriquement être possible.
Quelqu'un connaît-il une telle fonction?
Est-ce une bonne idée?