Një numër pseudo-rastësor është një numër i veçantë i krijuar nga një gjenerator special. Gjeneruesi përcaktues i biteve të rastësishëm (PRNG), i njohur gjithashtu si gjeneratori i biteve të rastësishëm përcaktues (DRBG), është një algoritëm për gjenerimin e një sekuence numrash, vetitë e të cilëve përafrojnë karakteristikat e sekuencave të numrave të rastësishëm. Sekuenca e gjeneruar PRNG nuk është vërtet e rastësishme, pasi përcaktohet tërësisht nga një vlerë e farës së quajtur fara PRNG, e cila mund të përfshijë vlera vërtet të rastësishme. Megjithëse sekuencat që janë më afër rastit mund të gjenerohen duke përdorur gjeneratorë të numrave të rastësishëm harduerikë, gjeneruesit e numrave pseudo të rastësishëm janë të rëndësishëm në praktikë për shpejtësinë e gjenerimit të numrave dhe riprodhueshmërinë e tyre.
Aplikacion
PRNG-të janë qendrore për aplikacione të tilla si simulimi (p.sh. për Monte Carlo), lojërat elektronike (p.sh. për gjenerimin procedural) dhe kriptografinë. Aplikacionet kriptografike kërkojnë që prodhimitë dhënat nuk ishin të parashikueshme nga informacionet e mëparshme. Kërkohen algoritme më komplekse që nuk trashëgojnë linearitetin e PRNG-ve të thjeshta.
Kushtet dhe Kushtet
Vetitë e mira statistikore janë një kërkesë qendrore për marrjen e një PRNG. Në përgjithësi, nevojitet një analizë e kujdesshme matematikore për t'u siguruar që RNG gjeneron numra që janë mjaft afër rastësisë për të qenë të përshtatshëm për përdorimin e synuar.
John von Neumann paralajmëroi kundër keqinterpretimit të PRNG si një gjenerues vërtet të rastësishëm dhe tha me shaka se "Kushdo që merr parasysh metodat aritmetike për gjenerimin e numrave të rastit është sigurisht në një gjendje mëkati."
Përdor
PRNG mund të niset nga një gjendje fillestare arbitrare. Gjithmonë do të gjenerojë të njëjtën sekuencë kur inicializohet me këtë gjendje. Periudha PRNG përcaktohet si më poshtë: maksimumi mbi të gjitha gjendjet fillestare të gjatësisë së prefiksit të sekuencës që nuk përsëritet. Periudha është e kufizuar nga numri i gjendjeve, zakonisht të matura në bit. Për shkak se gjatësia e periudhës potencialisht dyfishohet me çdo bit "gjendje" të shtuar, është e lehtë të krijohen PRNG me periudha mjaft të mëdha për shumë aplikime praktike.
Nëse gjendja e brendshme e PRNG përmban n bit, periudha e saj nuk mund të jetë më shumë se 2n rezultate, është shumë më e shkurtër. Për disa PRNG, kohëzgjatja mund të llogaritet pa anashkaluar të gjithë periudhën. Regjistrat linear të zhvendosjes së reagimeve (LFSR) janë zakonishtjanë zgjedhur në mënyrë që të kenë perioda të barabarta me 2n − 1.
Gjeneratorët kongruencialë linearë kanë periudha që mund të llogariten duke përdorur faktorizimin. Megjithëse PPP do të përsërisë rezultatet e saj pasi të arrijnë në fund të periudhës, një rezultat i përsëritur nuk do të thotë se është arritur fundi i periudhës, pasi gjendja e tij e brendshme mund të jetë më e madhe se produkti; kjo është veçanërisht e dukshme për PRNG-të me dalje të vetme bit.
Gabime të mundshme
Gabimet e gjetura nga PRNG-të me defekt variojnë nga ato delikate (dhe të panjohura) deri te ato të dukshme. Një shembull është algoritmi i numrave të rastësishëm RANDU, i cili është përdorur në mainframe për dekada. Ishte një mangësi serioze, por pamjaftueshmëria e saj kaloi pa u vënë re për një periudhë të gjatë kohore.
Në shumë fusha, studimet kërkimore që kanë përdorur përzgjedhje të rastësishme, simulime Monte Carlo ose metoda të tjera të bazuara në RNG janë shumë më pak të besueshme sesa mund të jenë rezultat i GNPG me cilësi të dobët. Edhe sot, ndonjëherë kërkohet kujdes, siç dëshmohet nga paralajmërimi në Enciklopedinë Ndërkombëtare të Shkencave Statistikore (2010).
Studim rasti i suksesshëm
Si ilustrim, merrni parasysh gjuhën e programimit Java të përdorur gjerësisht. Që nga viti 2017, Java ende mbështetet në Gjeneratorin Linear Congruential (LCG) për PRNG-në e tij.
Histori
PRNG-ja e parë për të shmangur probleme serioze dhe ende funksionon mjaft shpejt,ishte Mersenne Twister (diskutuar më poshtë), i cili u botua në 1998. Që atëherë, janë zhvilluar PRNG të tjera me cilësi të lartë.
Por historia e numrave pseudo-rastësor nuk përfundon këtu. Në gjysmën e dytë të shekullit të 20-të, klasa standarde e algoritmeve të përdorura për PRNG-të përfshinte gjeneratorë kongruentë linearë. Dihej se cilësia e LCG ishte e pamjaftueshme, por metoda më të mira nuk ishin në dispozicion. Press et al (2007) e përshkroi rezultatin si më poshtë: "Nëse të gjitha punimet shkencore, rezultatet e të cilave janë në dyshim për shkak të [LCG-ve dhe të ngjashme] zhduken nga raftet e bibliotekës, do të kishte një boshllëk sa madhësia e grushtit tuaj në çdo raft."
Arritja kryesore në krijimin e gjeneratorëve pseudo-rastësor ishte futja e metodave të bazuara në rekurente lineare në një fushë me dy elementë; oshilatorë të tillë janë të lidhur me regjistrat linear të zhvendosjes së reagimit. Ata shërbyen si bazë për shpikjen e sensorëve të numrave pseudo të rastësishëm.
Në veçanti, shpikja e vitit 1997 nga Mersen Twister shmangi shumë nga problemet me gjeneratorët e mëparshëm. Mersenne Twister ka një periudhë prej 219937−1 përsëritjesh (≈4.3 × 106001). Është vërtetuar se është shpërndarë në mënyrë uniforme në (deri në) 623 dimensione (për vlerat 32-bit) dhe në kohën e prezantimit të tij ishte më i shpejtë se gjeneratorët e tjerë statistikisht të shëndoshë që prodhojnë sekuenca numrash pseudo të rastësishme.
Në vitin 2003, George Marsaglia prezantoi një familje gjeneratorësh xorshift bazuar gjithashtu në përsëritjen lineare. Këta gjeneratorë janë jashtëzakonishtjanë të shpejta dhe - të kombinuara me një operacion jolinear - kalojnë teste rigoroze statistikore.
Në vitin 2006, u zhvillua familja e gjeneratorëve WELL. Gjeneratorët ËELL në njëfarë kuptimi përmirësojnë cilësinë e Twister Mersenne, i cili ka një hapësirë gjendje tepër të madhe dhe rikuperim shumë të ngad altë prej tyre, duke gjeneruar numra pseudo të rastësishëm me shumë zero.
Kriptografi
PRNG i përshtatshëm për aplikacione kriptografike quhet PRNG i sigurt kriptografik (CSPRNG). Kërkesa për një CSPRNG është që një sulmues që nuk e njeh farën të ketë vetëm një avantazh margjinal në dallimin e sekuencës së daljes së gjeneratorit nga një sekuencë e rastësishme. Me fjalë të tjera, ndërsa një PRNG kërkohet vetëm për të kaluar teste të caktuara statistikore, një CSPRNG duhet të kalojë të gjitha testet statistikore që janë të kufizuara në kohë polinomiale në madhësinë e farës.
Megjithëse prova e kësaj vetie është përtej nivelit aktual të teorisë së kompleksitetit llogaritës, prova të forta mund të sigurohen duke reduktuar CSPRNG në një problem që konsiderohet i vështirë, si faktorizimi i numrave të plotë. Në përgjithësi, mund të kërkohen vite rishikimi përpara se një algoritëm të mund të certifikohet si CSPRNG.
Është treguar se ka të ngjarë që NSA të ketë futur një derë të pasme asimetrike në gjeneratorin e numrave pseudo të rastësishëm Dual_EC_DRBG të certifikuar nga NIST.
Algoritme pseudo-rastësorenumrat
Shumica e algoritmeve PRNG prodhojnë sekuenca që shpërndahen në mënyrë të barabartë nga ndonjë nga disa teste. Kjo është një pyetje e hapur. Është një nga pikat kryesore në teorinë dhe praktikën e kriptografisë: a ka ndonjë mënyrë për të dalluar daljen e një PRNG me cilësi të lartë nga një sekuencë vërtet e rastësishme? Në këtë cilësim, zgjidhësi e di se ose është përdorur një algoritëm i njohur PRNG (por jo gjendja me të cilën është inicializuar), ose është përdorur një algoritëm vërtet i rastësishëm. Ai duhet të bëjë dallimin mes tyre.
Siguria e shumicës së algoritmeve dhe protokolleve kriptografike që përdorin PRNG bazohet në supozimin se është e pamundur të bëhet dallimi midis përdorimit të një PRNG të përshtatshme dhe përdorimit të një sekuence vërtet të rastësishme. Shembujt më të thjeshtë të kësaj varësie janë shifrat e transmetimit, të cilët më së shpeshti funksionojnë duke lënë jashtë ose duke dërguar mesazhin me tekst të thjeshtë me një dalje PRNG, duke prodhuar tekstin e shifruar. Dizajnimi i PRNG-ve të përshtatshme kriptografikisht është jashtëzakonisht i vështirë pasi ato duhet të plotësojnë kritere shtesë. Madhësia e periudhës së saj është një faktor i rëndësishëm në përshtatshmërinë kriptografike të një PRNG, por jo i vetmi.
Një kompjuter i hershëm PRNG i propozuar nga John von Neumann në 1946 njihet si metoda e katrorëve mesatarë. Algoritmi është si më poshtë: merrni çdo numër, katrore atë, hiqni shifrat e mesme të numrit që rezulton si një "numër i rastësishëm", pastaj përdorni këtë numër si numër fillestar për përsëritjen tjetër. Për shembull, kuadrimi i numrit 1111 jep1234321, i cili mund të shkruhet si 01234321, një numër 8-shifror është katrori i një numri 4-shifror. Kjo jep 2343 si një numër "të rastësishëm". Rezultati i përsëritjes së kësaj procedure është 4896, e kështu me radhë. Von Neumann përdori numra 10 shifror, por procesi ishte i njëjtë.
Disavantazhet e "sheshit të mesëm"
Problemi me metodën e "katrorit mesatar" është se të gjitha sekuencat përsëriten përfundimisht, disa shumë shpejt, për shembull: 0000. Von Neumann e dinte për këtë, por ai gjeti një qasje të mjaftueshme për qëllimet e tij dhe u shqetësua se "Korrigjimet" e matematikës thjesht do të fshehin gabimet në vend që t'i heqin ato.
Von Neumann gjeti që gjeneruesit e numrave të rastësishëm dhe pseudo të rastësishëm të harduerit janë të papërshtatshëm: nëse nuk regjistrojnë daljen e gjeneruar, ata nuk mund të kontrollohen për gabime më vonë. Nëse ata do të shkruanin rezultatet e tyre, ata do të shternin memorien e kufizuar të disponueshme të kompjuterit dhe kështu aftësinë e kompjuterit për të lexuar dhe shkruar numra. Nëse numrat do të shkruheshin në karta, do të duhej shumë më tepër kohë për t'u shkruar dhe lexuar. Në kompjuterin ENIAC ai përdori metodën e "katrorit të mesëm" dhe realizoi procesin e marrjes së numrave pseudo të rastësishëm disa qindra herë më shpejt se leximi i numrave nga letrat me grushta.
Katrori mesatar që atëherë është zëvendësuar nga gjeneratorë më kompleksë.
Metodë novatore
Një risi e fundit është kombinimi i katrorit mesatar me sekuencën Weil. Kjo metodë siguron produkte me cilësi të lartë brendaperiudhë e gjatë. Ndihmon për të marrë formulat më të mira të numrave pseudo të rastësishëm.