Bu soru öncelikle pratik bir yazılım mühendisliği problemiyle ilgilidir, ancak teorisyenlerin bu konuda daha fazla bilgi verebileceğini merak ediyorum.
Basitçe söylemek gerekirse, sahte bir sayı üreteci kullanan bir Monte Carlo simülasyonum var ve paralel olarak aynı simülasyonu çalıştıran 1000 bilgisayar olacak şekilde paralelleştirmek istiyorum. Bu nedenle 1000 bağımsız sahte sayı akışına ihtiyacım var.
Aşağıdaki özelliklere sahip 1000 paralel akışa sahip olabilir miyiz? Burada , her türlü hoş teorik ve ampirik özelliklere sahip, çok iyi bilinen ve yaygın olarak incelenen bir PRNG olmalıdır.
Akışlar, basitçe kullandığımda ve X tarafından üretilen akışı 1000 akışa böldüğümde elde edebileceğim kadar iyi .
Herhangi bir akışta bir sonraki sayıyı oluşturmak (neredeyse) ile bir sonraki sayıyı oluşturmak kadar hızlıdır .
Aksi takdirde: "ücretsiz" olarak birden fazla bağımsız yayın alabilir miyiz?
Tabii ki sadece kullandıysak , her zaman 999 sayısını atıp 1'i seçersek, kesinlikle mülk 1'e sahip olurduk, ancak çalışma süresinde faktör 1000 ile kaybederdik.
Basit bir fikir , tohumların 1, 2, ..., 1000 olan 1000 kopyasını kullanmak olacaktır. Bu kesinlikle hızlı olurdu, ancak akışların iyi istatistiksel özelliklere sahip olup olmadığı açık değildir.
Bazı Google'lardan sonra, örneğin aşağıdakileri buldum:
SPRNG kütüphane tam olarak bu amaç için tasarlanmış gibi görünüyor, ve desteklediği çoklu PRNGs .
Mersenne twister günümüzde popüler bir PRNG gibi görünüyor ve paralel olarak birden fazla akış üretebilen bir varyanta bazı referanslar buldum.
Ama bütün bunlar kendi araştırma alanımdan çok uzak, gerçekten en son teknolojinin ne olduğunu ve hangi yapıların sadece teoride değil pratikte de iyi çalıştığını anlayamadım.
Bazı açıklamalar: Herhangi bir şifreleme özelliğine ihtiyacım yok; bu bilimsel hesaplama içindir. Milyarlarca rastgele sayıya ihtiyacım olacak, bu yüzden periyodu olan herhangi bir jeneratörü unutabiliriz .
Düzenleme: Gerçek bir RNG kullanamıyorum; Deterministik bir PRNG'ye ihtiyacım var. İlk olarak, hata ayıklamada çok yardımcı olur ve her şeyi tekrarlanabilir hale getirir. İkincisi, çoklu geçiş modelini kullanabileceğimden yararlanarak, örneğin medyan bulmayı çok verimli bir şekilde yapmama izin veriyor ( bu soruya bakın ).
Edit 2: Yakından ilişkili bir soru var @ StackOverflow: Küme ortamı için sözde rasgele sayı üreteci .