You are on page 1of 9

Sveuilite Josipa Jurja Strossmayera

u Osijeku
Struni studij elektrotehnike















INFORMACIJA I INFORMACIJSKI SUSTAVI

Generiranje pseudosluajnih brojeva
























U Osijeku 27.09.2010.
SADRAJ

1. UVOD
2. PSEUDOSLUAJNI BROJEVI

3. PRIMJERI PSEUDOSLUAJNIH BROJEVA TEMELJENIH NA
ARITMETICI

3.1 Linear congruential generator

3.2 Lagged Fibonacci generator

3.3 Linear shift register generator

4. ZAHTIJEVI I POSEBNOSTI GENERIRANJA
PSEUDOSLUAJNIH BROJEVA

5. ZAKLJUAK

6. LITERATURA
1. UVOD

Sluajni broj.
Samo po sebi zvui kao neto to u nekakvoj primjeni u svijetu informatike odnosno
elektronike moe zadavati vie problema nego koristi jer postavlja se pitanje kako realni
sustav moe iskoristiti neto to je ne predvidivo.
A ipak koristimo realne strojeve da bi generirali sluajni broj.
Na posljetku tako generiran sluajan broj i nije na istinski nain sluajan jer proces njihovog
nastanka nije sluajan. Tako nastale brojeve s toga i nazivamo "pseudosluajnim" brojevima.

Danas psedosluajni brojevi imaju svoju primjenu u svijetu raunala, raunalnih igara, raznim
simulacijama i kriptografiji, tako da se u svakom trenutku diljem svijeta raunaju ogromne
koliine pseudosluajnih brojeva. U razliitim igrama koriste se da bi promijenili neke
parametre igre tako da ne dolazi do ponavljanja odreenih scena i uvjeta. Kod ozbiljnih
simulacija njihova primjena i uloga je daleko vea i ozbiljnija jer se mora uzimati u obzir to
se simulira, po kojim varijablama generiranje mora pratiti neke prethodne situacija tako da se
dobije neki logiki slijed, odnos vjerojatnosti pojave svakoga broja ovisi o prethodnim
brojevima. Ti zahtjevi trae i dobru izvedbu generatora pseudosluajnih brojeva i njegovo
detaljno ispitivanje jer sa loim generiranjem ni rezultati nee biti toni.
Kod kriptografije dolazi do izraaja kvaliteta generiranja odnosno generatora pseudosluajnih
brojeva jer sva komunikacija izmeu ureaja mora biti kriptirana radi sigurnosti informacije i
sprjeavanja ne ovlatenih upada u sustave. Iz tog razloga generatori (pseudo)sluajnih
brojeva se u kriptografiji dosta esto koriste, kod generiranja sluajnih lozinki, te kod
asimetrinih kljueva. to je generator ne predvidljiviji, to je poeljniji za kriptografsku
namjenu, a pritom se predvidljivi generatori zaobilaze u irokom luku. Sa loim generatorom
moe doi do pojave lako iskoristive sigurnosne rupe.
Iz gore navedenog vidimo da generiranje pseudosluajnih brojeva nije neto nepotrebno i
egzotino nego u stvarnom svijetu jako primjenjivo, a u praksi zahtjevi su takvi da samo
generiranje mora biti brzo, efikasno i dovoljno sloeno da se ne moe otkriti nain
generiranja.
U praksi postoji mnogo metoda generiranja pseudosluajnih brojeva, a sam odabir metode
mora biti prilagoen potrebama sustava odnosno njegovim zahtjevima za brzinu, sigurnost
jednostavnost ili neto drugo, a prvi generator pseudosluajnih brojeva dizajnirao je John von
Neumman 1946. g. pod imenom metoda srednjeg kvadrata








2. PSEUDOSLUAJNI BROJEVI

U svijetu u kojem ivimo okrueni smo sa raznim dogaajima koje su dogaaju u
odreenom nizu na prvi pogled ne povezano i sluajno. Ulazei u detalje dogaanja, a imajui
vie informacija o dogaaju moemo shvatiti njihovu povezanost.
Najee su sluajni brojevi dobiveni koritenjem raunala, odnosno pseudosluajni brojevi,
dobiveni na neki analogan nain, pomou nekog postupka koji mi u mislima ne moemo
rekonstruirati, pa ih stoga smatramo sluajnima.
Kao primjer ovakvog naina razmiljanja, navedimo niz brojeva:
24,16,27,4,1,14,19,13,2,23,21,14.
Na prvi pogled bi se oni mogli initi sluajnima i nepovezanima, a zapravo nisu. Naime, svaki
broj oznaava poziciju slova u hrvatskoj abecedi, a u ovom poretku ovdje zapravo pie
"sluajnibroj".Ovo je primjer pseudosluajnosti i moe imati svoju primjenu.
Svi generatori pseudosluajnih brojeva se baziraju na rekurzivnim aritmetikim i/ili logikim
formulama. Prilikom izraunavanja sljedeeg elementa niza sluajnih brojeva moemo se
koristiti sa samo jednim ili sa vie ve izraunatih lanova niza, a operacije nad njima mogu
biti matematike, ili ako se gledaju bitovni zapisi brojeva, logike. Svaki takav generator
zahtjeva neku poetnu vrijednost, te jo nekoliko parametara, koji onda slue kao koeficijenti
ili kao konstante.
Kvaliteta generatora pseudosluajnih brojeva se oituje u njegovoj nepredvidljivosti za dani
dosadanji generirani niz brojeva nemogue je odrediti sljedei generirani broj. Svaki
generator pseudosluajnih brojeva, nakon to ga se napravi, valja i dobro ispitati. Ispituju se
svojstva perioda ponavljanja niza generiranih brojeva, uniformnost raspodjele brojeva unutar
intervala, dok za potrebe simulacija valja znati kako su raspodijeljene n-torke dobivene od n
uzastopnih brojeva iz nekog generatora, u n dimenzionalnom prostoru. Takoer, ako se moe
pronai postojei generator za kojeg se pouzdano zna da ispunjava zahtjeve, te je ve koriten
i testiran, bolje je primijeniti njega nego ii samostalno programirati novi generator, jer je za
takav novi generator potrebno puno testiranja da bi se pokazala njegova primjenjivost.
U sluaju da je generator (pseudo)sluajnih brojeva dovoljno kvalitetan, odnosno, ukoliko je
funkcija saetka dovoljno kvalitetna, tada oni dobivaju prefiks "kriptografski (siguran)"






3. PRIMJERI PSEUDOSLUAJNIH BROJEVA TEMELJENIH NA
ARITMETICI

Ve smo spomenuli da se pseudosluajnost moe postii koritenjem aritmetikih i
logikih formula. Upotrebljavati se mogu i jednostavne formule, izvedive u samo jednoj liniji
programskog koda, ili se moe sastaviti neki algoritam s puno aritmetikih operacija i
parametara, te po mogunosti i logikim operacijama. Dodue, ne treba smatrati da sloen
algoritam automatski znai i bolja svojstva generiranih nizova brojeva. Takvo to se smije
tvrditi tek nakon testova. Prednost sloenih algoritama se moe eventualno iskoristiti tamo
gdje se nain generiranja eli to bolje sakriti, i oteati eventualno pogaanje formule kojom
su brojevi dobiveni iz neke koliine tih brojeva.
U seminaru su prikazana tri naina generiranja sluajnih brojeva
Unutar ovog seminara zadrat u se na tri jednostavna naina generiranja sluajnih brojeva
artimetikim formulama ili mogunostima logike manipulacije bitovnim zapisima brojeva.

3.1 Linear congruential generator


Linear congruential generator bi se moglo prevesti kao linearni "slijedni" generator
pseudosluajnih brojeva (LCG). Aritmetika formula za dobivanje brojeva na ovaj nain
izgleda ovako:
X
n+1
= aX
n
+ c (mod m)
Svaki LCG je definiran sa etiri parametra, a to su:
X
0
- sjeme (seed) odnosno poetni element ovako nastalog niza brojeva
a - koeficijent kojim se mnoi X
n

c - konstanta koja se nadodaje na umnoak aX
n

m - gornja granica brojeva koji nastaju
Formula je prilino jednostavna, programski lako izvediva, i olakano je eventualno
ispitivanje i traenje greaka u programu koji koristi ovakav nain generiranja sluajnih
brojeva. S druge strane, jednostavnost ovog naina generiranja pseudosluajnih brojeva
nalae oprez prilikom koritenja.
Jednostavan nain dobivanja realnih sluajnih brojeva od cijelih brojeva jest:
R
n
= X
n
/ m ili R
n
= X
n
/ (m-1)
gdje odabir nazivnika m ili (m-1) ovisi o tome elimo li broj 1 unutar skupa moguih
vrijednosti ili ne.
Bitno je i vidjeti to se dogaa s periodom dobivenih brojeva. Maksimalni period jest m, ali
razliitim kombinacijama ostalih parametara moe se postii manji period. Za broj m se
koriste potencije broja 2, ili prosti brojevi. Na primjer, esto koritena vrijednost, koja nudi
dobre mogunosti, je prost broj 2
31
-1. Osim "sluajnosti" brojeva, moe se promatrati i pojave
u bitovnim zapisima dobivenih brojeva. Katkad se mogu primjetiti ponavljanja najniih
bitova, to treba izbjegavati. Za veliinu X
0
najee se koristi neka veliina dobivena od
sistemskog sata u raunalu. Ali problem seed-a openito je mnogo opirniji, te e o njemu biti
vie napisano kasnije. Broj a mora biti neparan, a poeljno je da bude unutar nekoliko redova
veliine od vrijednosti broja m. Vano je napomenuti da ukoliko se koriste veliki brojevi,
treba koristiti veliine bez predznaka, da bi se izbjegla mogua promjena predznaka u zapisu
cijelog broja u dvojnom komplementu.
Vrlo bitno svojstvo ovakvih brojeva, a i jedan od najjednostavnijih kriterija kvalitete
generatora sluajnih brojeva, jest prosjena vrijednost svih brojeva, koja mora biti to blia
polovici od gornje granice intervala sluajnih brojeva.


3.2 Lagged Fibonacci generator


Ovakvi generatori dobili su svoje ime zbog slinosti formule s rekurzivnom formulom
kojom se dobivaju brojevi Fibonaccijevog niza. U daljnjem tekstu ce ovakvi generatori biti
oznaeni oznakom LFG. Opi oblik formule za dobivanje brojeva na ovakav nain glasi:
X
n
= X
n-l
+ X
n-k
(mod m)
s time da brojevi l i k moraju biti u odnosu l > k > 0. Ovakvi generatori pseudosluajnih
brojeva postaju sve zanimljiviji, jer su u nekim svojstvima znaajno bolji od LCG. Period niza
brojeva dobivenih ovako nije ogranien brojem m. Broj m se odabire kao potencija broja 2, jer
je ta kombinacija dosta testirana. Problem ponavljanja niih bitova se moe pojaviti kod malih
vrijednosti brojeva l i k, ali ovo se moe lako izbjei. Poput LCG-a i ovaj postupak zahtjeva
malo raunanja, te uzima malo procesorskog vremena, jedino to zahtjeva pamenje zadnjih l
vrijednosti. Bitno je naglasiti da barem jedan od tih l brojeva na samom poetku mora biti
neparan. LFG imaju i bolja svojstva kad im se vrijednosti koriste u n-torkama.






3.3 Linear shift register generator
Ova skupina generatora ima slinosti s prethodnim, ali se brojevi ne ostvaruju
aritmetikim operacijama, nego operacijama logikog posmaka ulijevo i iskljuivog ili, barem
u ovom sluaju. Shema koja prikazuje kako bi ovo trebalo funkcionirati uzeta je iz dokumenta
RFC1750 :
+----+ +----+ +----+ + ----+
| B | <-- | B | <-- | B | <-- . . . . . . <;--| B | <-+
| 0 | | 1 | | 2 | | n | |
+----+ +----+ +----+ + ----+ |
| | | |
| | V + -----+
| V +---------------- > | |
V + ----------------------------- > | XOR |
+--------------------------------------------------- > | |
+-----+
Najnii bit se postavlja kao parni paritet prethodnog broja, nad kojim je eventualno izvrsena
operacija logike konjukcije sa odabranom "maskom". I ovo predstavlja zanimljivu
mogunost generiranja pseudosluajnih brojeva, te ju se eventualno moe i koristiti u
kombinaciji s dvije ve predloene klase generatora.


4. ZAHTIJEVI I POSEBNOSTI GENERIRANJA
PSEUDOSLUAJNIH BROJEVA
Ovisno o mjestu koritenja generatora sluajnih brojeva, nad njima se postavljaju
zahtjevi. Za generatore pseudosluajnih brojeva u simulacijama se zahtijevaju dobra
statistika svojstva, neprimjetnost ili nepostojanje grupiranja n-torki koje nastaju od
elemenata niza pseudosluajnih brojeva nastalih tim generatorom. Poto se u tu svrhu treba
generirati puno sluajnih brojeva, sama procedura generiranja smije troiti samo mali dio
procesorskog vremena. Poto se danas takve simulacije esto vrte na sustavima s vie
procesora, zanimljivo je pogledati kako se generatori pseudosluajnih brojeva implementiraju
na takvim sustavima.
S druge strane, generatori pseudosluajnih brojeva esto su koriteni u raznim sigurnosnim
sustavima. Takvi sigurnosni sustavi ne smiju imati slabosti, pa tako niti generator
pseudosluajnih brojeva ne smije biti slabost. Prilikom stvaranja ili koritenja generatora
pesudosluajnih brojeva stoga treba imati na umu to sve mogu iskoristiti oni koji ele probiti
u sigurnosni sustav, to ima je sve na raspolaganju, i na to sve treba paziti.
Zbog toga to se u vieprocesorskim sustavima u jednom trenutku izvodi vie procesa koji u
nekom trenutku mogu zahtijevati generiranje sluajnog broja, implementacija generatora je
znatno sloenija. Treba nam mogunost rasporeivanja generiranih brojeva, ali uz
zadravanje kvaliteta sluajnosti nizova i njihove reproducibilnosti.

Postoji nekoliko naina rjeavanja ovog problema kao to su:

- CENTRALIZIRANI PRISTUP
- REPLICIRANJE GENERATORA
- DISTRIBUIRANI PRISTUP

CENTRALIZIRANI PRISTUP je implementiran preko jedne zadae ili procesa od
kojeg drugi zahtijevaju sluajne brojeve. Ovime se izbjegava stvaranje vie nizova sluajnih
brojeva, ali je slabost ovog pristupa pad performansi izvravanja ukupne simulacije. Javlja se i
problem reprodukcije nizova, poto se brojevi dijele onako kako zahtjevi stignu, to se ne
mora svaki put dogoditi na isti nain. Zbog ovog razloga i rezultati mogu varirati od
simulacije do simulacije.

REPLICIRANJE GENERATORA podrazumijeva stvaranje generatora za svaki
zadatak koji se izvrava. Generatori mogu, ali i ne moraju imati isti seed, ve se mogu koristiti
jedinstveni seed-ovi, recimo identifikacijski broj zadatka. Ovakav pristup ne garantira
neovisnost nizova generiranih brojeva, a i mogu nastati problemi s korelacijom. Najvanija
prednost ovog pristupa jest efikasnost, pa stoga je pogodan u nekim primjenama.

DISTRIBUIRANI PRISTUP koji za razliku od prethodna dva koja nisu teko
izvediva u praksi ali zato pate od odreenih nedostataka koji im smanjuju domenu koritenja.
U ovom sluaju se takoer za svaki zadatak stvara posebni generator pseudosluajnih brojeva,
ali njihovi seed-ovi nastaju od jednog generatora. Zbog toga je analiza olakana, te je lake
promatrati i statistike osobine nizova.
Primjer ovakvog pristupa jest metoda "sluajnog stabla" (The Random tree method).
Za potrebe implementacije ovakvog pristupa koriste se dva LCG-a :
L
k+1
= a
L
L
k
(mod m)
R
k+1
= a
R
R
k
(mod m)

Generator R se stvori za svaki zadatak koji ga zatrai, a seed mu je sljedei element iz niza
koji generira generator L, kako je skicirano na slici.
Dobra strana ove metode jest da su nastali nizovi reproducibilni, te da nisu centralizirani,
odnosno ponavljani. Ovo je bitno u sluajevima kada se trai dinamiko nastajanje
generatora. Loa strana jest ta to nema garancije da se dva niza, poto se radi o LCG, nee
preklopiti. Takoer e dva niza sa vrlo slinim seed-ovima biti slini. Ovo se moe izbjei ili
barem ublaiti koritenjem velikog perioda generatora, ali to nije garancija

5. ZAKLJUAK
U ovom seminaru vidjeli smo nain kako se generiraju pseudosluajni brojevi. Vidljivo je da
jedno od svojstava generiranja pseudosluajnih brojeva ponovljivost rezultata odnosno za
jednake vrijednosti seed-a dobivaju se identini izlazni nizovi, a to svojstvo nam
omoguuje njihovo koritenje za ponavljanje simulacija. Jedno neeljeno svojstvo koje se
inae ne moe nai kod pravih sluajnih nizova je periodinost, odnosno sigurno je da e
generator u koliko koristi konanu veliinu memorije, nakon odreenog broja iteracija nai u
istom poetnom stanju, nakon ega se generirani niz ponavlja iz poetka. Ta periodinost je
ogranieni problem jer oekivani period se udvostruuje sa svakim dodatnim bitom koritene
memorije, pa je tako jednostavno dizajnirati generator pseudosluajnih vrijednosti s periodom
tako velikom da ga ni jedno raunalo ne bi moglo cijelog prijei u beskonanoj vremenskoj
periodi. U primjeni, mnogi esto koriteni generatori pseudosluajnih brojeva u svojim
generiranim nizovima sadre nepoeljne smetnje, koje mogu uzrokovati pad na nekim
statistikim testovima sluajnosti.




6. LITERATURA


Verena M. Umar : "Random Number Generators", 1995.
Nikola Marekovi, FER, Zagreb
Hardversko generiranje sluajnih brojeva, Kreimir Fijako
http://spus.zesoi.fer.hr/projekt/2006_2007/fijacko-filipovic-jagatic-
oreskovic/spusprojekthardverskogeneriranjeslucajnihbrojeva.pdf
Wikipedija, http://en.wikipedia.org/wiki/Pseudorandom_number_generator

You might also like