Jest to w zasadzie problem matematyczny, ale bardzo związany z programowaniem: jeśli mam 1 miliard ciągów zawierających adresy URL i biorę pierwsze 64 bitów sumy kontrolnej MD5 każdego z nich, rodzaj częstotliwości kolizji powinienem się spodziewać?Wyjątkowo identyfikujące adresy URL z jednym 64-bitowym numerem
Jak zmienia się odpowiedź, jeśli mam tylko 100 milionów adresów URL?
Wydaje mi się, że kolizje będą niezwykle rzadkie, ale te rzeczy wydają się mylące.
Czy mogę lepiej użyć czegoś innego niż MD5? Pamiętaj, że nie szukam bezpieczeństwa, tylko dobra funkcja szybkiego mieszania. Również natywne wsparcie w MySQL jest miłe.
EDIT: not quite a duplicate
Masz na myśli 2^64 (18 444 744 707 551 616), gdzie powiedziałeś 2^32 powyżej? Pytanie mówi o 64 bitach, ale nie o 32. – unwind
Nie, ma na myśli 2^32. Oznacza to, że w przypadku adresów URL 100M jest mniej niż 1% szans na 1 kolizję. Myślę, że wezmę to. – itsadok
Zgadza się, itadok, mam na myśli 2^32, a nie 2^64. Na tym polega cały paradoks urodzin: szansa na dopasowanie dowolnych dwóch losowych wartości jest przeciwnie –