私は次のクラスを持っています:
public class Foo
{
int year;
string name;
int category;
}
以下にデータの例を示します。
2012 Test1 1000
2012 Test2 1000
2012 Test3 1000
2012 Test4 1000
2012 Test4 10
...
GetHashCode をオーバーライドすると、すべての結果は非常に似ています。
return year ^ name ^ category;
int hash = 13;
hash = hash * 33 + year.GetHashCode();
hash = hash * 33 + name.GetHashCode();
hash = hash * 33 + category.GetHashCode();
return hash;
この状況に適した (最大分布の) ハッシュ関数は何ですか?
編集: ハッシュ バケットに関する私の理解が間違っている可能性があります。類似のハッシュ値を同じバケットに移動しますか?
"Test1".GetHashCode() --> -1556460260
"Test2".GetHashCode() --> -1556460257