Encontré este enlace un poco útil. Se da una visión general básica pero no llega a un conocimiento profundo de las cosas tales como qué mejor momento, ¿por qué cambiar algo, etc ..
http://www.i-programmer.info/babbages-bag/479-hashing.html
Desde este enlace, resaltar alguna sección que dio una visión general
¿Qué hace que una buena función hash mayoría de las buenas funciones hash funcionan calculando el resto después de dividir por el tamaño de la tabla N.
Esto siempre da un valor entre 0 y N-1 por lo que es adecuado pero si N es un número primo entonces también es excelente para dispersar los datos en torno a la mesa. Por supuesto, si tiene un valor de texto que desea hash, primero debe convertirlo en un valor numérico adecuado y un esquema simple como el del ejemplo no funcionará.
Necesita generar un valor numérico diferente para cada valor de texto posible y no es posible agregar los códigos ASCII de las dos primeras letras. Un mejor método es ponderar cada uno de los códigos ASCII por la posición de la letra multiplicando por 1 para el primer carácter, 10 para el segundo, 100 para el tercero y así sucesivamente ... antes de sumarlos para dar un valor único.
En general, la construcción de una función hash muy buena es difícil y en la mayoría de los casos es necesario encontrar una que tenga buenas propiedades y haya sido probada.
la pregunta era sobre la función hash, no una tabla hash. – codymanix
Gracias @codymanix, agregué una edición para evitar confusiones. –
La página de función hash de Wikipedia está lejos de ser un buen tutorial. – Frank