3
我想取得40亿个正整数的集合并以伪随机序列输出它们,这样在输出所有40亿个数据之前不会重复任何数字。我希望这个序列对于给定的种子是可重复和可预测的。 是否有一个很好的算法来生成这样的序列,而不是将有序序列放在内存中,然后对整个事物进行伪随机排序操作?如果它使事情变得更容易,随机性可能非常弱。 谢谢从32位有限集合生成伪随机重复整数
我想取得40亿个正整数的集合并以伪随机序列输出它们,这样在输出所有40亿个数据之前不会重复任何数字。我希望这个序列对于给定的种子是可重复和可预测的。 是否有一个很好的算法来生成这样的序列,而不是将有序序列放在内存中,然后对整个事物进行伪随机排序操作?如果它使事情变得更容易,随机性可能非常弱。 谢谢从32位有限集合生成伪随机重复整数
您可以使用一个简单的线性同余发生器和a (= 214013)
,c (= 2531011)
,m (= 2^32)
适当的值来使其满期。
X(n+1) = (a*X(n) + c) mod m
这将产生所有 2^32个值而不更换,之后重复同样的序列。
'return i ++'太弱了吗? ;-) – assylias
你可以使用assylias舌尖回答,然后用固定值(种子)异或输出。 –
您应该能够按特定顺序使用按位运算符来创建看似随机的模式,但实际上完全是非随机的。我预计也会涉及一些递归。 – Scottie