Hola Compañeros Estadísticos,
Tengo una fuente de generación de hashes (por ejemplo, el cálculo de una cadena con una marca de tiempo y otra información y hash md5) y quiero proyecto en un número fijo de segmentos (digamos 100).
muestra hash: 0fb916f0b174c66fd35ef078d861a367
Lo que al principio pensé que era utilizar sólo el primer carácter de la hash para elegir un cubo, pero esto conduce a una salvajemente no uniforme de proyección (es decir, algunas de las letras apppear muy rara vez y otra muy frecuentemente)
Entonces, traté de convertir esta hexa cadena en un entero usando la suma de los char valores, a continuación, tomar el modulo para elegir un cubo:
import sys
for line in sys.stdin:
i = 0
for c in line:
i += ord(c)
print i%100
Parece que funciona en la práctica, pero no sé si hay sentido común o teóricas de los resultados que podría explicar por qué y en qué medida esto es cierto ?
[Editar] Después de algún pensamiento que me vino a la siguiente conclusión: En teoría, usted puede convertir el hash en un (muy grande) entero por interpretarla como un número : i = h[0] + 16*h[1]+16*16* h[2] ... + 16^31*h[31] (cada letra representa un número hexadecimal). Entonces usted podría modulo este gran número de proyectar para el cubo espacio. [/Edit]
Gracias !