У меня есть массив int, я хочу создать для него хэш-функцию, чтобы два целочисленных массива с разными элементами приводили к одинаковым хеш-значениям для низкой вероятности, как лучше всего это сделать?
Длина массива может быть до 500, целое число может быть от 0 до 50.
Обратите внимание, что нет точной копии вопроса, так как природа целочисленного массива (длина и диапазон чисел) различна.
Я использую это раньше
public int GetHashCode(int[] data)
{
if (data == null)
return 0;
int result = 17;
foreach (var value in data)
{
result += result * 23 + value;
}
return result;
}
но я обнаруживаю, что у него много столкновений.
Что я хочу решить, так это построить dictionary<int[], string>
, чтобы когда целое число с одинаковыми значениями приводило к другому хэш-коду.
so that two integer arrays with different elements do not result in the same hash values
- невозможно, sum[n=0..50](500^n) намного превышает Int32.MaxValue - person decPL   schedule 26.02.2014