我想寫出下面的Haskell功能,將提供給我的唯一的隨機生成一個列表:Haskell的隨機生成的序列
randomGenerators :: RandomGen g => g -> [g]
是以下不會造成這樣的局面合理的解決方案「相同」序列在哪裏重複?
randomGenerators g = iterate (fst . split) g
我明顯丟掉所有發電機的一半,但這會是一個問題嗎?
我想寫出下面的Haskell功能,將提供給我的唯一的隨機生成一個列表:Haskell的隨機生成的序列
randomGenerators :: RandomGen g => g -> [g]
是以下不會造成這樣的局面合理的解決方案「相同」序列在哪裏重複?
randomGenerators g = iterate (fst . split) g
我明顯丟掉所有發電機的一半,但這會是一個問題嗎?
只要split
正確實施(即生成不相關的生成器),這將起作用。 System.Random
一個被認爲是強大的(雖然它的執行split
包含評論-- no statistical foundation for this!
,所以使用它在你自己的風險和測試相關性)。
或者,您可以使用專門設計用於並行批次的RNG。例如,我有一個包Random123
,它實現了counter-based generators(目前對性能沒有很好的優化,但可能適合您的目的)。那裏可能還有DCMT library的綁定,或者你可以自己寫。
Erm。人們會很樂意回答這個問題,但這似乎是一個非常糟糕的主意。你真的想做什麼?可能會有更好的方法。 –