Насколько велика вероятность столкновения HashCode с эта функция хэш-кода?

Насколько вероятно столкновение HashCode с функцией ниже в следующих сценариях.

  1. Со случайными значениями int для ключа [0], ключа [1], ключа [2], ключа [3]
  2. Со случайными значениями ключа со следующими ограничениями
    • ключ [0] <1 000 000
    • ключ [1] <10 000
    • ключ [2] <1000
    • ключ [3] <1000

Предположим, у нас есть 10 миллионов объектов.

int[] key=new int[4];    
public override int GetHashCode()
{
    // Use large prime multiples to create a unique hash key
    // Create the hash offsets using a "even powers of 2 minus 1" method, which gives 
    // primes most of the time.  
    int hashKey = 0;
    hashKey += 2047 * key[0];
    hashKey += 8191 * key[1];
    hashKey += 32767 * key[2];
    hashKey += 131071 * key[3];
    return hashKey;
}
5
задан derdo 16 March 2011 в 21:13
поделиться