Haskell随机生成器的序列

时间:2013-10-21 04:21:54

标签: haskell random

我想写下面的Haskell函数,它将为我提供一个独特的随机生成器列表:

randomGenerators :: RandomGen g => g -> [g]

以下是否是一个合理的解决方案,不会产生重复“相同”序列的情况?

randomGenerators g = iterate (fst . split) g

我显然扔掉了所有发电机的一半,但这会有问题吗?

1 个答案:

答案 0 :(得分:3)

如果split正确实现(即,如果它生成不相关的生成器),这将有效。 System.Random一个被认为是健壮的(尽管split的实现包含注释-- no statistical foundation for this!,因此请自行承担风险并测试相关性。)

或者,您可以使用专门设计用于平行批次的RNG。例如,我有一个包Random123来实现counter-based generators(目前还没有很好地优化性能,但可能适合您的目的)。那里可能还有DCMT library的绑定,或者你可以编写自己的绑定。