есть строки длиной до 100 символов, при построении строк применяется набор из 55 символов.
для каждой строки вычисляется hash, hash — 4 байтный (скажем crc32),
Как подсчитать вероятность, что в наборе из 5000 строк, окажутся 2 строки с одникаковым hash ?
Здравствуйте, <Аноним>, Вы писали:
А>есть строки длиной до 100 символов, при построении строк применяется набор из 55 символов.
А>для каждой строки вычисляется hash, hash — 4 байтный (скажем crc32),
А>Как подсчитать вероятность, что в наборе из 5000 строк, окажутся 2 строки с одникаковым hash ?
Для твоего события необходимо, чтобы две строки имели одинаковый хэш и чтобы 4998 строк имели любой другой отличающийся хэш. Вероятность получения определенного хеша равна 2^-32. Вероятность неполучения определенного хэша, соответственно, 1-2^-32, т.к. получение и неполучение конкретного хеша — два несовместимых события. Вероятность получения сочетания 5000 строк, где 2 строки имеют одинаковый хеш по теории умножения вероятностей равна (2^-32)^2*(1-2^-32)^4998.
Количество сочетаний по 2 элемента из 5000 элементов будет равно 5000!/(2!*(5000-2)!)=5000*4999/2.
Таким образом по теореме сложения вероятностей, вероятность получения искомого события будет равна:
5000*4999/2*(2^-32)^2*(1-2^-32)^4998 = 6,8e-13 или 6,8e-11%
Во всем нужна мера, даже в том, чтобы соблюдать ее.