2014-02-05 59 views
3

我想取得40億個正整數的集合並以僞隨機序列輸出它們,這樣在輸出所有40億個數據之前不會重複任何數字。我希望這個序列對於給定的種子是可重複和可預測的。 是否有一個很好的算法來生成這樣的序列,而不是將有序序列放在內存中,然後對整個事物進行僞隨機排序操作?如果它使事情變得更容易,隨機性可能非常弱。 謝謝從32位有限集合生成僞隨機重複整數

+1

'return i ++'太弱了嗎? ;-) – assylias

+0

你可以使用assylias舌尖回答,然後用固定值(種子)異或輸出。 –

+0

您應該能夠按特定順序使用按位運算符來創建看似隨機的模式,但實際上完全是非隨機的。我預計也會涉及一些遞歸。 – Scottie

回答

1

您可以使用一個簡單的線性同餘發生器和a (= 214013),c (= 2531011),m (= 2^32)適當的值來使其滿期。

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

這將產生所有 2^32個值而不更換,之後重複同樣的序列。