[1, 1000] と文字列に 3 つの整数を持つ構造があります。
少なくとも 1 つのフィールドが異なる 2 つの構造が異なるコードを生成し、同じ内容を持つ構造が一貫して同じコードを生成するように、32 ビット数で表す必要があります。通常、整数フィールドの 1 つが数単位で増加します。これにより、必然的に異なるコードが生成されるはずです。
最初は、構造体フィールドを定数形式の文字列にフォーマットし、それを String クラスの GetHashCode 関数を使用してハッシュすることを考えました。しかし、同じ入力で繰り返しプロセスを実行しても同じハッシュ出力が生成されるとは限らないといういくつかの議論をここで読みました。まず、これは .NET 4 に当てはまりますか? ハッシュ値は永続化され、プロセスの実行中に一貫性を保つ必要があるため、これは私にとって重要です。また、素数を使用して各構造体フィールドに適用されたプラットフォーム GetHashCode の結果のビット演算を実行するための提案もここで見ました。しかし、ここでも、プロセス実行の一貫した結果を当てにできないようです。
暗号化ハッシュ関数を使用すると、32 ビットを超えます。
文字列フィールドがなければ、数値フィールドから 32 ビット配列としてコードを構成します。そのようなビット配列を文字列フィールド GetHashCode の結果と XOR する価値があるでしょうか? 一部の入力に対して実行を繰り返すと、同じハッシュ出力が生成される可能性が高くなりますか?
あなたは何をすることを提案しますか?