Lý do tại sao các số nguyên tố được sử dụng là để giảm thiểu va chạm khi dữ liệu thể hiện một số mẫu cụ thể.
Điều đầu tiên trước tiên: Nếu dữ liệu là ngẫu nhiên thì không cần số nguyên tố, bạn có thể thực hiện thao tác mod với bất kỳ số nào và bạn sẽ có cùng số lần va chạm cho mỗi giá trị có thể của mô đun.
Nhưng khi dữ liệu không ngẫu nhiên thì những điều kỳ lạ xảy ra. Ví dụ, hãy xem xét dữ liệu số luôn là bội số của 10.
Nếu chúng tôi sử dụng mod 4, chúng tôi thấy:
10 mod 4 = 2
20 mod 4 = 0
30 mod 4 = 2
40 mod 4 = 0
50 mod 4 = 2
Vì vậy, từ 3 giá trị có thể của mô đun (0,1,2,3) chỉ có 0 và 2 sẽ có va chạm, điều đó thật tệ.
Nếu chúng ta sử dụng số nguyên tố như 7:
10 mod 7 = 3
20 mod 7 = 6
30 mod 7 = 2
40 mod 7 = 4
50 mod 7 = 1
Vân vân
Chúng tôi cũng lưu ý rằng 5 không phải là một lựa chọn tốt nhưng 5 là nguyên nhân vì tất cả các khóa của chúng tôi là bội số của 5. Điều này có nghĩa là chúng tôi phải chọn một số nguyên tố không chia các khóa của chúng tôi, chọn một số nguyên tố lớn là thường là đủ
Vì vậy, lỗi ở khía cạnh lặp đi lặp lại, lý do các số nguyên tố được sử dụng là để vô hiệu hóa hiệu ứng của các mẫu trong các khóa trong phân phối va chạm của hàm băm.