Đây là vấn đề về toán học, nhưng rất có liên quan đến lập trình: nếu tôi có 1 tỷ chuỗi chứa URL và tôi lấy 64 bit đầu tiên của MD5 băm của mỗi cái, loại tần số va chạm tôi nên mong đợi?Chỉ định duy nhất các URL với một số 64 bit
Câu trả lời thay đổi như thế nào nếu tôi chỉ có 100 triệu URL?
Dường như với tôi rằng va chạm sẽ cực kỳ hiếm, nhưng những điều này có xu hướng gây nhầm lẫn.
Tôi có nên sử dụng một cái gì đó khác ngoài MD5 không? Tâm trí bạn, tôi không tìm kiếm bảo mật, chỉ là một hàm băm nhanh. Ngoài ra, hỗ trợ bản địa trong MySQL là tốt đẹp.
EDIT: not quite a duplicate
Vì vậy, bạn có nghĩa là 2^64 (18,446,744,073,709,551,616) nơi bạn đã nói 2^32 trở lên? Câu hỏi nói về 64 bit, nhưng không phải 32. – unwind
Không, anh ta có nghĩa là 2^32. Điều đó có nghĩa là đối với các url 100M, có ít hơn 1% khả năng xảy ra 1 xung đột. Tôi nghĩ tôi sẽ lấy nó. – itsadok
Đó là chính xác, itsadok, tôi có nghĩa là 2^32, không phải 2^64. Đó là toàn bộ điểm của nghịch lý sinh nhật: cơ hội của bất kỳ hai giá trị ngẫu nhiên nào khớp nhau là cao hơn nhiều so với cơ hội của bất kỳ giá trị ngẫu nhiên nào khớp với một mục tiêu duy nhất –