Pertanyaan ini terutama terkait dengan masalah rekayasa-perangkat lunak praktis, tetapi saya ingin tahu jika para ahli teori dapat memberikan wawasan lebih dalam.
Sederhananya, saya memiliki simulasi Monte Carlo yang menggunakan generator nomor pseudorandom, dan saya ingin memparalelkannya sehingga ada 1000 komputer yang menjalankan simulasi yang sama secara paralel. Karena itu saya perlu 1000 aliran angka pseudorandom independen.
Bisakah kita memiliki 1000 stream paralel dengan properti berikut? Di sini harus menjadi PRNG yang sangat terkenal dan dipelajari secara luas dengan semua jenis sifat teoritis dan empiris yang bagus.
Streaming terbukti sebaik apa yang akan saya dapatkan jika saya hanya menggunakan dan membagi aliran yang dihasilkan oleh X menjadi 1000 stream.
Menghasilkan nomor berikutnya dalam aliran apapun (hampir) secepat menghasilkan nomor berikutnya dengan .
Jika tidak, bisakah kita mendapatkan beberapa aliran independen "gratis"?
Tentu saja jika kita hanya menggunakan , selalu membuang angka 999 dan memilih 1, maka kita pasti akan memiliki properti 1, tetapi kita akan kalah dalam waktu berjalan dengan faktor 1000.
Gagasan sederhana akan menggunakan 1000 salinan , dengan biji 1, 2, ..., 1000. Ini tentu akan cepat, tetapi tidak jelas apakah aliran memiliki sifat statistik yang baik.
Setelah beberapa Googling, saya telah menemukan, misalnya, yang berikut:
The SPRNG perpustakaan tampaknya dirancang untuk persis tujuan ini, dan mendukung beberapa PRNGs .
Twister Mersenne tampaknya menjadi PRNG yang populer saat ini, dan saya menemukan beberapa referensi untuk varian yang mampu menghasilkan beberapa aliran secara paralel.
Tetapi semua ini sangat jauh dari bidang penelitian saya sendiri, sehingga saya tidak dapat menemukan apa yang benar-benar canggih, dan konstruksi mana yang bekerja dengan baik tidak hanya dalam teori tetapi juga dalam praktiknya.
Beberapa klarifikasi: Saya tidak memerlukan segala jenis properti kriptografi; ini untuk perhitungan ilmiah. Saya akan membutuhkan miliaran angka acak, sehingga kita bisa melupakan generator apa pun dengan periode .
Sunting: Saya tidak dapat menggunakan RNG sejati; Saya membutuhkan PRNG deterministik. Pertama, ini sangat membantu dengan debugging dan membuat semuanya berulang. Kedua, ini memungkinkan saya untuk melakukan, misalnya, mencari median sangat efisien dengan mengeksploitasi fakta bahwa saya dapat menggunakan model multi-pass (lihat pertanyaan ini ).
Sunting 2: Ada pertanyaan terkait erat @ StackOverflow: Pseudo-random number generator untuk lingkungan cluster .