Questo è fondamentalmente un problema di matematica, ma molto correlato alla programmazione: se ho 1 miliardo di stringhe contenenti URL, e prendo i primi 64 bit dell'hash MD5 di ciascuno di essi, cosa tipo di frequenza di collisione dovrei aspettarmi?URL di identificazione univoca con un numero a 64 bit
Come cambia la risposta se ho solo 100 milioni di URL?
Mi sembra che le collisioni saranno estremamente rare, ma queste cose tendono a essere confuse.
Sarebbe meglio usare qualcosa di diverso da MD5? Intendiamoci, non sto cercando sicurezza, solo una buona funzione di hash veloce. Inoltre, il supporto nativo in MySQL è bello.
EDIT: not quite a duplicate
Quindi, vuoi dire 2^64 (18,446,744,073,709,551,616) dove hai detto 2^32, sopra? La domanda parla di 64 bit, ma non di 32. – unwind
No, significa 2^32. Ciò significa che per 100 milioni di url c'è meno dell'1% di possibilità di 1 collisione. Penso che lo prendo. – itsadok
Questo è corretto, itsadok, intendo 2^32, non 2^64. Questo è il punto cruciale del paradosso del compleanno: la possibilità che due valori casuali si corrispondano a vicenda è controintuitivamente molto più alta della possibilità che qualsiasi valore casuale corrisponda a un singolo bersaglio –