我想取一组40亿个正整数并以伪随机序列输出它们,这样就不会重复任何数字直到输出所有40亿个。我希望这个序列对于给定的种子是可重复的和可预测的。 是否有一个很好的算法来生成这样的序列,而不是将有序序列放在内存中然后对整个事件运行伪随机排序操作?如果让事情变得更容易,随机性可能非常微弱。 感谢
答案 0 :(得分:1)
您可以使用具有a (= 214013)
,c (= 2531011)
,m (= 2^32)
的适当值的简单线性同余生成器来使其成为完整周期。
X(n+1) = (a*X(n) + c) mod m
这将生成所有 2 ^ 32值而无需替换,并在此之后重复相同的序列。