Điểm:2

Làm cách nào để khai thác RNG của Java để tìm các cụm?

lá cờ sy

nhập mô tả hình ảnh ở đây

Trong hình trên, bạn có thể thấy một lưới tọa độ chứa một số điểm màu xanh lá cây ngẫu nhiên. Mỗi điểm có 1/10 cơ hội giả ngẫu nhiên có màu xanh lục. Những gì tôi đang tìm kiếm là các cụm điểm màu xanh lá cây này trong bán kính ~8 (bỏ qua mặt nạ bên trong được hiển thị). Nói cách khác, tôi đang tìm kiếm các khu vực mật độ cao không chắc chắn về mặt thống kê của những điểm màu xanh lá cây này. Cốt lõi của vấn đề này là Java RNG được tìm thấy trong java.util.Random (nguồn ở đây). Mã để xác định xem một điểm có màu xanh lục hay không phụ thuộc vào hàm băm này. Các yếu tố đầu vào là một số không đổi, $k$, và tọa độ của điểm, $x$$y$.

hạt dài = ((k + (dài) (x * x * 4987142) + (dài) (x * 5947611) + (dài) (y * y) * 4392871L + (dài) (y * 389711) ^ 987234911L) ^ 0x5DEECE66DL) & ((1L << 48) - 1);
bit int, val;
làm
{
    hạt giống = (hạt giống * 0x5DEECE66DL + 0xBL) & ((1L << 48) - 1);
    bit = (int)((ulong)hạt >> 17);
    val = bit % 10;
} while (bit - val + 9 < 0);

trả về giá trị == 0;

Đã có nghiên cứu nhỏ về vấn đề này trong quá khứ nhưng tôi không đủ hiểu biết để đóng góp thêm. Những gì đã được tìm thấy là tiềm năng các cụm có kích thước nhỏ 2x2 và 3x3 tạo ra một mẫu khi so sánh với các cụm khác nhau $k$ các giá trị. nhập mô tả hình ảnh ở đây

Điều này có thể cung cấp manh mối về tọa độ mà một tìm kiếm sẽ tập trung tính toán nhiều hơn với một giá trị nhất định. $k$, nhưng tôi không bị thuyết phục. Như một ví dụ, đây là một bản đồ nhiệt kích thước cụm cho một cụ thể $k$. Bạn có thể tìm thêm thông tin về cách những hình ảnh này được lấy từ đây.

nhập mô tả hình ảnh ở đây

Hiện tại, tôi chỉ đang kiểm tra số lượng cụm của từng tọa độ và bỏ qua tọa độ nếu cụm quá thấp để cụm tiếp theo có cụm đủ kích thước, hầu hết trong số đó là do tôi đang tìm kiếm thống kê ngoại lệ.

Điều tôi hy vọng là có một số mẫu có thể khai thác được trong thuật toán này, thực tế là có thể đảo ngược hàm băm này theo một cách nào đó hoặc có những tối ưu hóa chính cần có trong phương pháp hiện tại của tôi.

Có thể một con đường khả thi phía trước sẽ là xem liệu mô hình mạng tinh thể có tiếp tục tồn tại đối với các cụm ngày càng lớn hơn hay không, nhưng một hình ảnh khác trên bài đăng đó dường như chỉ ra rằng nó sẽ bị lẫn trong tiếng ồn.

lá cờ kr
Tại sao bạn nghĩ rằng câu hỏi này có liên quan đến mật mã? Mã này sử dụng RNG giả. Điều này có nghĩa là, đối với cùng một hạt giống, nó sẽ luôn tạo ra kết quả **giống nhau**. Đây là câu hỏi lập trình thuần túy và có thể được trả lời tốt hơn trên SO.
Paul Uszak avatar
lá cờ cn
@mentallurg Chờ đã. Mặc dù rất đẹp, chủ đề cơ bản của câu hỏi này là thao túng/khai thác RNG. Đó là một cuộc tấn công chính xác vào chủ đề ở đây. Biến $k$ thay đổi theo định nghĩa và đó là mấu chốt. Nhiều diễn đàn .SE trùng lặp mà tôi đoán là hậu quả của việc tăng trưởng tự nhiên không kiểm soát được.
lá cờ kr
@PaulUszak: Câu hỏi là về **RNG giả**. Mã được đề cập sử dụng lớp Random thực hiện PRNG. Một phần thiết yếu của mã là, đối với mỗi đối số mới, một hạt giống mới được tính toán. Việc đặt cùng một hạt giống sẽ dẫn đến việc tạo ra các kết quả **giống nhau**. Điều này không có gì để làm với thao tác. Và câu hỏi là hỏi về cách **cải thiện hiệu suất**.
Gabe avatar
lá cờ sy
@mentallurg Tôi nghĩ câu hỏi này rất đúng với tinh thần của mật mã học. Tôi không yêu cầu mã để cải thiện hiệu suất, tôi đang tìm một lối tắt tổng quát. Điểm của thẻ **pseudo-random-generator** là gì nếu các câu hỏi về PRNG lạc đề???
Maarten Bodewes avatar
lá cờ in
Tôi có thể thấy điều này phần nào hữu ích để thực hiện phân tích PRNG, mặc dù tôi đang tự hỏi điều này ảnh hưởng bao nhiêu đến một câu hỏi nghiên cứu thay vì một câu hỏi có thể được trả lời một cách khách quan mà không cần nghiên cứu.
lá cờ kr
@Gabe: 1) Thẻ trên trang web này có ý nghĩa vì trình tạo giả ngẫu nhiên được sử dụng cho nhiều tác vụ mã hóa. Nếu PRNG không được sử dụng cho các tác vụ mã hóa, thì trang web này không có chủ đề. 2) Bạn viết "*Tôi chỉ là **vũ phu**... Điều tôi hy vọng là... có **tối ưu hóa chính***". Điều này có nghĩa là bạn đang tìm cách tối ưu hóa hiệu suất. Nếu vấn đề liên quan đến mật mã, đây sẽ là câu hỏi có liên quan. Nhưng vì bạn không hiển thị bất kỳ kết nối nào của vấn đề của mình với mật mã, nên việc tối ưu hóa này không có chủ đề trên trang web này.
the default. avatar
lá cờ id
Đây không phải là một cuộc tấn công mã hóa, nhưng việc viết lại mã để nó không phải tính toán lại `deltas` mỗi lần và sử dụng lại kết quả của các tính toán trước đây khi tăng x cho phép nó xử lý cùng 100 triệu khối trong 2,3 giây với tốc độ khiêm tốn hơn nhiều CPU 8 luồng Ryzen 2500U: https://pastebin.com/UuDpVPQg (biên dịch với `-fopenmp` để xử lý đa luồng). Chuyển cái này trở lại OpenCL sẽ làm cho nó đủ nhanh cho hầu hết các mục đích thực tế.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.