Xin chào các nhà thống kê,
Tôi có một băm tạo nguồn (ví dụ: tính toán một chuỗi có dấu thời gian và các thông tin khác và băm với md5) và tôi muốn chiếu nó vào một số lượng cố định (ví dụ 100).
mẫu băm: 0fb916f0b174c66fd35ef078d861a367
Điều tôi nghĩ lúc đầu là chỉ sử dụng ký tự đầu tiên của hàm băm để chọn một nhóm, nhưng điều này dẫn đến một phép chiếu không đồng đều cực kỳ (nghĩa là một số chữ cái xuất hiện rất hiếm và rất thường xuyên khác)
Sau đó, tôi đã cố gắng chuyển đổi chuỗi hexa này thành một số nguyên bằng cách sử dụng tổng các giá trị char, sau đó lấy modulo để chọn một nhóm:
import sys
for line in sys.stdin:
i = 0
for c in line:
i += ord(c)
print i%100
Nó dường như hoạt động trong thực tế, nhưng tôi không biết liệu có bất kỳ ý nghĩa thông thường hoặc kết quả lý thuyết nào có thể giải thích tại sao và mức độ này là đúng không?
[Chỉnh sửa] Sau một số suy nghĩ, tôi đã đi đến kết luận sau: Về lý thuyết, bạn có thể chuyển đổi hàm băm thành số nguyên (rất lớn) bằng cách hiểu nó là một số: i = h [0] + 16 * h [1] + 16 * 16 * h [2] ... + 16 ^ 31 * h [31] (mỗi chữ cái đại diện cho một số thập lục phân). Sau đó, bạn có thể điều chỉnh số lượng lớn này để chiếu nó vào không gian xô. [/Biên tập]
Cảm ơn !