Câu hỏi này chủ yếu liên quan đến một vấn đề kỹ thuật phần mềm thực tế, nhưng tôi sẽ tò mò muốn biết liệu các nhà lý thuyết có thể cung cấp cái nhìn sâu sắc hơn về nó hay không.
Nói một cách đơn giản, tôi có một mô phỏng Monte Carlo sử dụng trình tạo số giả ngẫu nhiên và tôi muốn song song với nó để có 1000 máy tính chạy cùng một mô phỏng. Vì vậy, tôi cần 1000 luồng giả số độc lập.
Chúng ta có thể có 1000 luồng song song với các thuộc tính sau không? Ở đây nên là một PRNG rất nổi tiếng và được nghiên cứu rộng rãi với tất cả các loại tính chất lý thuyết và thực nghiệm tốt đẹp.
Các luồng có thể chứng minh tốt như những gì tôi sẽ nhận được nếu tôi chỉ đơn giản sử dụng và chia luồng được tạo bởi thành 1000 luồng.
Tạo ra các số tiếp theo trong bất kỳ dòng là (hầu như) càng nhanh càng tạo ra các số tiếp theo với .
Nói cách khác: chúng ta có thể nhận được nhiều luồng độc lập "miễn phí" không?
Tất nhiên, nếu chúng ta chỉ đơn giản sử dụng , luôn loại bỏ 999 số và chọn 1, thì chúng ta chắc chắn sẽ có thuộc tính 1, nhưng chúng ta sẽ mất trong thời gian chạy theo hệ số 1000.
Một ý tưởng đơn giản là sử dụng 1000 bản , với các hạt 1, 2, ..., 1000. Điều này chắc chắn sẽ nhanh, nhưng không rõ ràng nếu các luồng có thuộc tính thống kê tốt.
Sau một số Googling, tôi đã tìm thấy, ví dụ, như sau:
Các SPRNG thư viện dường như được thiết kế cho mục đích này chính xác, và nó hỗ trợ nhiều PRNGs .
Mersenne twister dường như là một PRNG phổ biến hiện nay và tôi đã tìm thấy một số tài liệu tham khảo về một biến thể có thể tạo ra nhiều luồng song song.
Nhưng tất cả những điều này nằm cách xa khu vực nghiên cứu của tôi, đến nỗi tôi không thể tìm ra đâu là công nghệ tiên tiến nhất, và công trình nào hoạt động tốt không chỉ trên lý thuyết mà cả trong thực tế.
Một số làm rõ: Tôi không cần bất kỳ loại tài sản mật mã nào; đây là tính toán khoa học Tôi sẽ cần hàng tỷ số ngẫu nhiên, vì vậy chúng tôi có thể quên bất kỳ trình tạo nào có khoảng thời gian .
Chỉnh sửa: Tôi không thể sử dụng RNG thực sự; Tôi cần một PRNG xác định. Thứ nhất, nó giúp rất nhiều với việc gỡ lỗi và làm cho mọi thứ có thể lặp lại. Thứ hai, nó cho phép tôi thực hiện, ví dụ, tìm kiếm trung bình rất hiệu quả bằng cách khai thác thực tế là tôi có thể sử dụng mô hình nhiều đường chuyền (xem câu hỏi này ).
Chỉnh sửa 2: Có một câu hỏi liên quan chặt chẽ @ StackOverflow: Trình tạo số giả ngẫu nhiên cho môi trường cụm .