Et pseudo-tilfældigt tal er et specielt tal genereret af en speciel generator. Den Deterministic Random Bit Generator (PRNG), også kendt som Deterministic Random Bit Generator (DRBG), er en algoritme til at generere en talsekvens, hvis egenskaber tilnærmer karakteristika for tilfældige talsekvenser. Den genererede PRNG-sekvens er ikke virkelig tilfældig, da den er helt bestemt af en frøværdi kaldet PRNG-frø, som kan omfatte virkelig tilfældige værdier. Selvom sekvenser, der er tættere på tilfældige, kan genereres ved hjælp af hardware-tilfældige talgeneratorer, er pseudo-tilfældige talgeneratorer vigtige i praksis for hastigheden af talgenerering og deres reproducerbarhed.
Application
PRNG'er er centrale for applikationer som simulering (f.eks. til Monte Carlo), elektroniske spil (f.eks. til proceduremæssig generering) og kryptografi. Kryptografiske applikationer kræver, at outputtetdataene var ikke forudsigelige ud fra tidligere oplysninger. Der kræves mere komplekse algoritmer, som ikke arver lineariteten af simple PRNG'er.
Vilkår og betingelser
Gode statistiske egenskaber er et centr alt krav for at opnå en PRNG. Generelt er omhyggelig matematisk analyse nødvendig for at være sikker på, at RNG'en genererer tal, der er tæt nok på tilfældige til at være passende til den tilsigtede brug.
John von Neumann advarede mod at fejlfortolke PRNG som en virkelig tilfældig generator og jokede med, at "Enhver, der overvejer aritmetiske metoder til at generere tilfældige tal, er helt sikkert i en synd."
Brug
PRNG kan startes fra en vilkårlig starttilstand. Den vil altid generere den samme sekvens, når den initialiseres med denne tilstand. PRNG-perioden er defineret som følger: maksimum over alle begyndelsestilstande af længden af det ikke-gentagende sekvenspræfiks. Perioden er begrænset af antallet af tilstande, norm alt målt i bit. Fordi periodelængden potentielt fordobles med hver tilføjet "state"-bit, er det nemt at oprette PRNG'er med perioder, der er store nok til mange praktiske anvendelser.
Hvis den interne tilstand af PRNG'en indeholder n bit, kan dens periode ikke være mere end 2n resultater, den er meget kortere. For nogle PRNG'er kan varigheden beregnes uden at omgå hele perioden. Lineære Feedback Shift Registers (LFSR'er) er typisker valgt, så de har perioder lig med 2n − 1.
Lineære kongruentielle generatorer har perioder, der kan beregnes ved hjælp af factoring. Selvom OPP vil gentage sine resultater, efter de når slutningen af perioden, betyder et gentaget resultat ikke, at slutningen af perioden er nået, da dets interne tilstand kan være større end outputtet; dette er især tydeligt for PRNG'er med enkeltbit-output.
Mulige fejl
Fejl fundet af defekte PRNG'er spænder fra subtile (og ukendte) til indlysende. Et eksempel er RANDU tilfældigt tal-algoritmen, som har været brugt på mainframes i årtier. Det var en alvorlig mangel, men dens utilstrækkelighed forblev ubemærket i lang tid.
På mange områder er forskningsundersøgelser, der har brugt tilfældig udvælgelse, Monte Carlo-simuleringer eller andre metoder baseret på RNG, meget mindre pålidelige, end det kunne være resultatet af GNPG af dårlig kvalitet. Selv i dag er forsigtighed nogle gange påkrævet, som det fremgår af advarslen i International Encyclopedia of Statistical Science (2010).
Vellykket casestudie
Som en illustration, overvej det meget brugte Java-programmeringssprog. Fra 2017 er Java stadig afhængig af Linear Congruential Generator (LCG) til sin PRNG.
Historie
Den første PRNG til at undgå alvorlige problemer og stadig køre ret hurtigt,var Mersenne Twister (omt alt nedenfor), som blev udgivet i 1998. Siden da er andre PRNG'er af høj kvalitet blevet udviklet.
Men historien om pseudo-tilfældige tal slutter ikke der. I anden halvdel af det 20. århundrede inkluderede standardklassen af algoritmer, der blev brugt til PRNG'er, lineære kongruentielle generatorer. Kvaliteten af LCG var kendt for at være utilstrækkelig, men bedre metoder var ikke tilgængelige. Press et al (2007) beskrev resultatet som følger: "Hvis alle videnskabelige artikler, hvis resultater er i tvivl på grund af [LCG'er og relaterede] forsvandt fra bibliotekets hylder, ville der være et hul på størrelse med din knytnæve på hver hylde."
Den vigtigste præstation i skabelsen af pseudo-tilfældige generatorer var introduktionen af metoder baseret på lineær tilbagevendende i et to-element felt; sådanne oscillatorer er koblet til lineære tilbagekoblingsskifteregistre. De tjente som grundlag for opfindelsen af pseudo-tilfældige talsensorer.
Især undgåede opfindelsen fra 1997 af Mersen Twister mange af problemerne med tidligere generatorer. Mersenne Twister har en periode på 219937−1 iterationer (≈4,3 × 106001). Det har vist sig at være ensartet fordelt i (op til) 623 dimensioner (for 32-bit værdier), og på tidspunktet for dets introduktion var det hurtigere end andre statistisk sunde generatorer, der producerer pseudo-tilfældige talsekvenser.
I 2003 introducerede George Marsaglia en familie af xorshift-generatorer, der også var baseret på lineær gentagelse. Disse generatorer er ekstremter hurtige og - kombineret med en ikke-lineær operation - består de strenge statistiske tests.
I 2006 blev WELL-generatorfamilien udviklet. WELL-generatorer forbedrer på en måde kvaliteten af Twister Mersenne, som har et alt for stort tilstandsrum og meget langsom genopretning fra dem, hvilket genererer pseudo-tilfældige tal med mange nuller.
Kryptografi
PRNG egnet til kryptografiske applikationer kaldes kryptografisk sikker PRNG (CSPRNG). Kravet til en CSPRNG er, at en angriber, der ikke kender frøet, kun har en marginal fordel ved at skelne generatorens outputsekvens fra en tilfældig sekvens. Med andre ord, mens en PRNG kun kræves for at bestå visse statistiske test, skal en CSPRNG bestå alle statistiske test, der er begrænset til polynomiel tid i frøstørrelse.
Selvom beviset for denne egenskab ligger ud over det nuværende niveau af beregningsmæssig kompleksitetsteori, kan der leveres stærke beviser ved at reducere CSPRNG til et problem, der anses for at være svært, såsom heltalsfaktorisering. Generelt kan der kræves flere års gennemgang, før en algoritme kan certificeres som en CSPRNG.
Det er blevet vist, at det er sandsynligt, at NSA har indsat en asymmetrisk bagdør i den NIST-certificerede Dual_EC_DRBG pseudo-tilfældige talgenerator.
Pseudo-tilfældige algoritmertal
De fleste PRNG-algoritmer producerer sekvenser, der er jævnt fordelt ved en af flere tests. Dette er et åbent spørgsmål. Det er en af de centrale i teori og praksis for kryptografi: er der en måde at skelne output fra en højkvalitets PRNG fra en virkelig tilfældig sekvens? I denne indstilling ved resolveren, at enten en kendt PRNG-algoritme blev brugt (men ikke den tilstand, den blev initialiseret med), eller en virkelig tilfældig algoritme blev brugt. Han skal skelne mellem dem.
Sikkerheden af de fleste kryptografiske algoritmer og protokoller, der bruger PRNG'er, er baseret på den antagelse, at det er umuligt at skelne mellem brugen af en passende PRNG og brugen af en virkelig tilfældig sekvens. De enkleste eksempler på denne afhængighed er stream ciphers, som oftest fungerer ved at udelade eller sende klartekstmeddelelsen med et PRNG-output, der producerer chifferteksten. At designe kryptografisk passende PRNG'er er ekstremt vanskeligt, da de skal opfylde yderligere kriterier. Størrelsen af dens periode er en vigtig faktor i den kryptografiske egnethed af en PRNG, men ikke den eneste.
En tidlig computer-PRNG foreslået af John von Neumann i 1946 er kendt som middelkvadratmetoden. Algoritmen er som følger: tag et hvilket som helst tal, firkant det, fjern de midterste cifre i det resulterende tal som et "tilfældigt tal", og brug derefter dette tal som startnummer for den næste iteration. For eksempel giver det at kvadrere tallet 11111234321, som kan skrives som 01234321, er et 8-cifret tal kvadratet af et 4-cifret tal. Dette giver 2343 som et "tilfældigt" tal. Resultatet af at gentage denne procedure er 4896, og så videre. Von Neumann brugte 10-cifrede tal, men processen var den samme.
Ulemper ved "midterste firkant"
Problemet med "mean square"-metoden er, at alle sekvenser til sidst gentages, nogle meget hurtigt, for eksempel: 0000. Von Neumann vidste om dette, men han fandt en tilgang, der var tilstrækkelig til hans formål, og var bekymret for, at matematiske "korrektioner" ville bare skjule fejlene i stedet for at fjerne dem.
Von Neumann fandt hardwaregeneratorer for tilfældige og pseudo-tilfældige tal uegnede: hvis de ikke optager det genererede output, kan de ikke kontrolleres for fejl senere. Hvis de skulle skrive deres resultater ned, ville de opbruge computerens begrænsede tilgængelige hukommelse og dermed computerens evne til at læse og skrive tal. Hvis tal blev skrevet på kort, ville de tage meget længere tid at skrive og læse. På ENIAC-computeren brugte han metoden "midterste kvadrat" og udførte processen med at opnå pseudo-tilfældige tal flere hundrede gange hurtigere end at læse tal fra hulkort.
Mean square er siden blevet afløst af mere komplekse generatorer.
Innovativ metode
En nylig nyskabelse er at kombinere det gennemsnitlige kvadrat med Weil-sekvensen. Denne metode sikrer produkter af høj kvalitet indenforlang periode. Det hjælper med at få de bedste pseudo-tilfældige talformler.