Salut chers statisticiens,
J'ai une source générant des hachages (par exemple, calculer une chaîne avec un horodatage et d'autres informations et hacher avec md5) et je veux la projeter dans un nombre fixe de compartiments (disons 100).
exemple de hachage: 0fb916f0b174c66fd35ef078d861a367
Ce que je pensais au début était de n'utiliser que le premier caractère du hachage pour choisir un seau, mais cela conduit à une projection extrêmement non uniforme (c'est-à-dire que certaines lettres apparaissent très rarement et d'autres très fréquemment)
Ensuite, j'ai essayé de convertir cette chaîne hexa en un entier en utilisant la somme des valeurs char, puis j'ai pris le modulo pour choisir un compartiment:
import sys
for line in sys.stdin:
i = 0
for c in line:
i += ord(c)
print i%100
Cela semble fonctionner dans la pratique, mais je ne sais pas s'il y a du bon sens ou des résultats théoriques qui pourraient expliquer pourquoi et dans quelle mesure cela est vrai?
[Modifier] Après réflexion, je suis arrivé à la conclusion suivante: En théorie, vous pouvez convertir le hachage en un (très grand) entier en l'interprétant comme un nombre: i = h [0] + 16 * h [1] + 16 * 16 * h [2] ... + 16 ^ 31 * h [31] (chaque lettre représente un nombre hexadécimal). Ensuite, vous pouvez moduler ce grand nombre pour le projeter dans l'espace du compartiment. [/Éditer]
Merci !