从32位有限集生成伪随机非重复整数

时间:2014-02-05 23:09:03

标签: random numbers generator

我想取一组40亿个正整数并以伪随机序列输出它们,这样就不会重复任何数字直到输出所有40亿个。我希望这个序列对于给定的种子是可重复的和可预测的。 是否有一个很好的算法来生成这样的序列,而不是将有序序列放在内存中然后对整个事件运行伪随机排序操作?如果让事情变得更容易,随机性可能非常微弱。 感谢

1 个答案:

答案 0 :(得分:1)

您可以使用具有a (= 214013)c (= 2531011)m (= 2^32)的适当值的简单线性同余生成器来使其成为完整周期。

X(n+1) = (a*X(n) + c) mod m

这将生成所有 2 ^ 32值而无需替换,并在此之后重复相同的序列。