Function hash(int key, int range) h = key % range if h < 0: h += range return h End Function //very, very bad Function hash(string key, int range) return 0 End Function //very bad Function hash(string key, int range) return length(key) End Function //not great Function hash(string key, int range) h = 0 for each char c in the key: h += ASCII(c) return h % range End Function //good Function hash(string key, int range) h = 0 for each char c in the key: h *= 31 h += ASCII(c) return h % range End Function