Это в основном математическая проблема, но очень программируемая: если у меня есть 1 миллиард строк, содержащих URL-адреса, и я беру первые 64 бита хэша MD5 каждого из них, что я бы ожидал?Уникально идентифицирующие URL-адреса с одним 64-разрядным номером
Как изменяется ответ, если у меня есть только 100 миллионов URL-адресов?
Мне кажется, что столкновения будут крайне редкими, но эти вещи, как правило, запутывают.
Могу ли я лучше использовать что-то другое, кроме MD5? Имейте в виду, я не ищу безопасности, просто хорошая быстрая хеш-функция. Кроме того, хорошая поддержка MySQL в MySQL.
EDIT: not quite a duplicate
Итак, вы имеете в виду 2^64 (18,446,744,073,709,551,616), где вы сказали 2^32, выше? Вопрос говорит о 64 бит, но не 32. – unwind
Нет, он означает 2^32. Это означает, что для 100-миллионных URL-адресов вероятность 1 столкновения составляет менее 1%. Думаю, я возьму его. – itsadok
Это правильно, егоадок, я имею в виду 2^32, а не 2^64. В этом весь парадокс дня рождения: вероятность любых двух случайных величин, соответствующих друг другу, противоречит друг другу, намного выше, чем вероятность любого случайного значения, соответствующего одной цели –