Een goede PRNG (Pseudo-Random Number Generator) algoritme zal een cyclustijd, gedurende welke het nooit zal worden in dezelfde staat te hebben. Als u de hele staat van de PRNG bloot te leggen van het aantal opgehaald uit het, vindt u een aantal gegarandeerd uniek voor de periode van de generator te krijgen.
Een eenvoudige PRNG die dit doet wordt de ' Linear congruential ' PRNG met een formule herhaalt:
X(i) = AX(i-1)|M
Met behulp van de juiste paar factoren die je kunt een periode van 2 ^ 30 (ongeveer 1 miljard euro) van een eenvoudig PRNG met een 32 bit accumulator krijgen. Merk op dat je een 64 bit tijdelijke variabele moet lang lang om de tussenliggende 'AX' deel van de berekening te houden. De meeste, zo niet alle C-compilers zullen dit soort gegevens ondersteunen. Je moet ook in staat zijn om het te doen met een numeriek gegevens op de meeste SQL dialecten.
Met de juiste waarden van A en M kunnen we een random number generator met goede statistische en geometrische eigenschappen te krijgen. Er is een beroemde paper over dit geschreven door Fishman en Moore.
Voor M = 2 ^ 31-1 krijgen we kunnen de waarden van A hieronder te gebruiken om een PRNG krijgen met een mooie lange periode (2 ^ 30 IIRC).
Goede Waarden van A:
742,938,285
950,706,376
1,226,874,159
62,089,911
1,343,714,438
Merk op dat dit type generator (per definitie) geen cryptografisch beveiligd. Als u weet dat het laatste nummer gegenereerd op basis van het u kan voorspellen wat het volgende zal doen. Helaas heb ik denk dat je cryptografische beveiliging en gegarandeerde niet-herhaalbaarheid niet kunt krijgen op hetzelfde moment. Een PRNG cryptografisch beveiligd (bijv Blum Blum Shub ) kan onvoldoende staat bloot een gegenereerde getal zodat het volgende nummer in de reeks te voorspellen. Daarom is de interne toestand is breder dan het gegenereerde nummer en (om een goede beveiliging) de periode langer dan het aantal mogelijke waarden die kunnen worden gegenereerd. Dit betekent dat de blootgestelde aantal niet uniek binnen de termijn zal zijn.
Om soortgelijke redenen hetzelfde geldt voor lange tijd generatoren zoals de mersennetwister.