我正在尝试提出一种算法,将字符串散列到特定数量的桶中,但还没有想到如何做到这一点?
我有一个这样的字符串列表:
a.jpg
b.htm
c.gif
d.jpg
e.swf
我想运行一个函数来根据字符串获取 1 到 4 之间的数字。
egajpg 将是 3
b.htm 将是 2
c.gif 将是 1
等等
它需要保持一致,因此如果我在 a.jpg 上运行该函数,它总是返回 3。
该算法用于在服务器之间分配资源......
egajpg 将从 server3.mydomain.com 访问b.htm 将从 server2.mydomain.com
等
访问
有谁知道我将如何去做这件事?
任何建议将不胜感激!
干杯
蒂姆
标准 GetHashCode 和 % 可以工作:Math.Abs("aaaa".GetHashCode()) % numberOfBuckets.
编辑感谢 Thomas Levesque 提醒 GetHashCode() 返回 < 0。添加 Math.Abs 以获得正确的代码,但其他答案中的版本可能会更好。