Uygun bir PRNG (Pseudo-Random Number Generator) algoritma aynı durumda olmayacak sırasında bir döngü zaman var olacaktır. Ondan alınan sayısındaki PRNG tüm devlet maruz ise, jeneratör bir süre için benzersiz garantili bir dizi alacak.
Bu formül dolaşır 'Linear Congruential' PRNG denir gelmez basit PRNG:
X(i) = AX(i-1)|M
Eğer (yaklaşık 1 milyar dolar) 32 bit akümülatör ile basit bir PRNG 2 ^ 30 bir süre alabilirsiniz faktörlerin sağ çifti kullanma. Eğer hesaplama ara 'AX' kısmını tutmak için uzun bir geçici değişken bir 64 bit gerekir unutmayın. Çoğu değil tüm C derleyicileri bu veri türünü destekleyen eğer. Ayrıca çoğu SQL lehçeleri üzerine bir sayısal veri türü ile bunu yapmak mümkün olmalıdır.
A ve M doğru değerler ile biz iyi istatistik ve geometrik özelliklere sahip bir rasgele sayı üreteci alabilirsiniz. Fishman ve Moore tarafından yazılmış bu konuda ünlü bir kağıt var.
M = 2 ^ 31 - için biz olsun 1 güzel bir uzun süre (2 ^ 30 IIRC) ile bir PRNG almak için aşağıdaki A değerlerini kullanabilirsiniz.
A İyi Değerler:
742,938,285
950,706,376
1,226,874,159
62,089,911
1,343,714,438
Jeneratörün bu tür (tanımı gereği) kriptografik olarak güvenli olmadığını not edin. Ondan üretilen son numarasını biliyorsanız bunu bir sonraki ne yapacağını tahmin edebilirsiniz. Ne yazık ki aynı zamanda kriptografik güvenlik ve garantili olmayan tekrarlanabilirlikten alınamıyor inanıyorum. Bir PRNG kriptografik olarak güvenli olması için (örneğin, Blum Blum Shub) bu sırayla sonraki sayı tahmin izin vermek için oluşturulan yeterli sayıda devlet maruz olamaz. Bu nedenle iç durum oluşturulan sayısından daha geniştir ve (iyi güvenlik için) dönem oluşturulabilir olası değerleri sayısından daha uzun olacaktır. Bu açıkta kalan sayısı, dönem içinde benzersiz olması anlamına gelir.
Benzer nedenlerle aynı tür Mersenne Twister. olarak uzun süre jeneratörler doğrudur