Professional Documents
Culture Documents
Algoritmi Generisanja Pseudoslučajnih Brojeva
Algoritmi Generisanja Pseudoslučajnih Brojeva
Algoritmi Generisanja Pseudoslučajnih Brojeva
Krsto Prorokovi
Sadraj:
1. TA SU PSEUDOSLUAJNI BROJEVI?.............................................3 1.1. SLUAJNI BROJEVI...........................................................................................3 1.2. PSEUDOSLUAJNI BROJEVI..................................................................................3 2. ALGORITMI GENERISANJA PSEUDOSLUAJNIH BROJEVA................4 2.1. METODA SREDINE KVADRATA..............................................................................5 2.2. BLUM-BLUM-UB..........................................................................................7 2.3. LINEARNI KONGRUENTNI GENERATOR......................................................................8 2.3.1. Lemerov algoritam generisanja pseudosluajnih brojeva...............9 2.3.2. M generator.....................................................................................9 2.4. INVERZIVNI KONGRUENTNI GENERATOR..................................................................10 2.5. FIBONAIJEV GENERATOR SA KANJENJEM...............................................................11 3. JO NEKI ALGORITMI GENERISANJA PSEUDOSLUAJNIH BROJEVA. 12 4. PROCJENA KVALITETA...............................................................13 5. INDEKS KLJUNIH RIJEI...........................................................14 6. SPISAK LITERATURE I IZVORA...................................................15
Krsto Prorokovi 2
1. ta su pseudosluajni brojevi?
1.1. Sluajni brojevi
Sluajni brojevi (eng. random numbers) su nizovi brojeva koji se ne pokoravaju nikakvom obrascu, tj. ne postoji obrazac po kojem se dobijaju. Sluajni brojevi se javljaju u prirodnim pojavama i situacijama koje je nemogue predvidjeti. S obzirom da je samo pojavljivanje nizova sluajnih brojeva potpuno nepredvidivo, nemogue je odrediti da li je neki niz sluajan ili ne. Dokazano je da svi nizovi brojeva pokazuju neke od karakteristika koje se oekuju od od nizova sluajnih brojeva.
Krsto Prorokovi 3
Primjena ovih algoritama moze se podijeliti u dvije grupe: 1. Kriptografija (ifrovanje ili kodiranje) sigurnost poruke direktno zavisi od kvaliteta ifrovanja; ifrovanje se zasniva na kljucevima (eng. keys) koji se generiu pomocu ovih algoritama. 2. Raunarske simulacije opsisivanje realnog dogaaja uz pomo brojeva. Ovi algoritmi su najvie koriteni u izradi maina za kockanje, kao i u izradi video igara i lava lampi. Krsto Prorokovi 4
Algoritmi generisanja pseudosluajnih brojeva U nastavku seminarskog rada bie prikazani sljedei algoritmi generisanja pseudosluajnih brojeva: Metoda sredine kvadrata Blum-Blum-ub Linearni kongruentini generator Inverzivni kongruentni generator Fibonaijev generator sa kanjenjem
Krsto Prorokovi 5
Krsto Prorokovi 6
xppredstavlja sjeme, n broj cifara sjemena, a xp+1dobijeni pseudosluajni broj ( xp, xp+1 i n su prirodni brojevi)
Zadatak 1: Ako se za sjeme uzme 1111, koji e se pseudosluajni brojevi dobiti ako se algoritam izvri 3 puta? Zadatak 2: U nekom od poznatih programskih jezika, napisati program koji generie pseudosluajne brojeve primjenom metode srednjeg kvadrata.
2.2. Blum-Blum-ub
Blum-Blum-ub (eng. Blum-Blum-Shub) je algoritam generisanja pseudosluajnih brojeva koji su 1986.g. objavili Manuel Blum (eng. Manuel Blum), Lenore Blum (eng. Lenore Blum) i Majkl ub (eng. Michael Shub). Obrazac ovog algoritma po kom se dobijaju pseudosluajni izgleda ovako:
2 xn+1 = xn mod M
gdje je M prizvod dva velika, uzajamno prosta broja p i q takva da oba pri dijeljenju sa 4 daju isti ostatak. Za sjeme ( x0 ) uzima se broj koji je razliit od 1 i koji nije uzajamno prost sa M (p i q ne smiju biti faktori x0 ). Ovaj algoritam nije pogodan za upotrebu u raunarskim simulacijama, ve samo samo u kriptografiji, jer se izvravanje algoritma odvija veoma sporo. Primjer: Neka je p=7, q=19 i sjeme x0 =100. Tada je M=p*q=7*19=133.
2 x1 = x0 mod M = 10000 mod133 = 25
x2 = 252 mod133 = 625mod133 = 93 x3 = 932 mod133 = 8649 mod133 = 4 x4 = 4 2 mod133 = 16 mod133 = 16 ...
Dobijamo sljedee pseudosluajne brojeve: 25, 93, 4, 16 itd. Zadatak 1: Ako je p=11, q=19 i sjeme x0 =3, koji e se pseudosluajni brojevi dobiti ako se algoritam izvri 3 puta? Zadatak 2: U nekim od poznatih programskih jezika, napisati program koji generie pseudosluajne brojeve primjenom Blum-Blum-ub-a. Krsto Prorokovi 7
xn+1 = a xn + c (mod m )
gdje su m, a i c konstante takve da: m>0 0<a<m 0c<m m (modulus) predstavlja gornju granicu pseudosluajnih brojeva koji nastaju i za m se najee uzim broj oblika 2 M (M je prirodan broj). Za sjeme ( x0 ) uzima se broj takav da 0 x< m 1 U zavisnosti od c izdvajaju se 2 vrste linear congruential generator-a: 1. c = 0, multiplikativni kongruentni generator najvei period koji moe postii ovaj linearni kongruentni generator je etvrtina m i to je mogue samo ako se odabere konstanta a takva da pri dijeljenju sa 8 daje ostatak 3 ili pri dijeljenju sa 8 daje ostatak 5. 2. c > 0, mjeoviti kongruentni generator ako se odabere konstanta a takva da pri dijeljenju sa svim prostim djeliocima konstante m daje ostatak 1 i pri dijeljenju sa 4 daje ostatak 1 i konstanta m takva da se 4 sadi u m, postie se puni period u vrijednosti od m. Linearni kongruentni generator je veoma brzi algoritam generisanja pseudosluajnih brojeva, to ga ini jako pogodnim za raunarske simulacije. Ovaj algoritam koristi se za generisanje pseudosluajnih brojeva u veini programskih jezika. Zadatak 1: U nekom od poznatih programskih jezika, napisati program koji generie pseudosluajne brojeve primjenom: a) multiplikativnog kongruentnog generatora b) mjeovitog kongruentnog generatora.
Krsto Prorokovi 8
xk+1 = g xk mod n
gdje je n= 2 31 1 = 2147483647 (Mersenov prost broj M 31 ) i g= 75 = 16807 . Vrijednosti ovih parametara, predloili su 1988.g. Stiven Park (eng. Stephen Park) i Kit Miller (eng. Keith Miller), zbog kojih se ovaj algoritam generisanja pseudosluajnih brojeva jo naziva i Park-Miller alogiritam generisanja pseudosluajnih brojeva.
2.3.2. M generator
Ukoliko elimo da dobijemo pseudosluajne brojeve bolje sluajnosti moemo upotrijebiti dva linear congruential generator-a, pri emu dobijamo M generator. Ideja je sljedea: koristimo jedan linear congruential generator kako bi dobili niz pseudosluajnih brojeva duine n. Zatim korienjem drugog linear congruential generator-a generiemo pseudosluajan broj k koji se nalazi izmeu 1 i n. U izlazni niz stavljamo k-ti lan prvog niza, zatim ponovo generiemo broj izmeu 1 i n, itd. Algoritam glasi: 1. pomou linear congruential generator-a 1 generisati niz Pi , i = 1, 2, ..., n 2. pomou linear congruential generator-a 2 generisati pseudosluajan broj k izmeu 1in 3. u nizu P pronai k-ti lan 4. Pk uzeti za izlazni pseudosluajni broj 5. generisati novu vrijednost za Pk 6. ponavljati korake 2-5 dok se ne dobije niz eljene duine Postupak se moe prikazati sljedeom emom:
Krsto Prorokovi 9
x0 = 1
Krsto Prorokovi 10
Fn = Fn1 + Fn2 , F0 = 0 , F1 = 1
Obrazac za dobijanje pseudosluajnih brojeva u nizu je sledei:
Krsto Prorokovi 12
4. Procjena kvaliteta
Njemaka Federalna Sluba za Informacionu Bezbjednost je uspostavila 4 standarda kvaliteta algoritama za generisanje pseudosluajnih brojeva: K1 Niz pseudosluajnih brojeva sa malom vjerovatnoom sadrnja identinih uzastopnih lanova K2 Niz pseudosluajnih brojeva koji se ne moe razlikovati niza pravih sluajnih brojeva. Ovakav niz se odreuje preko odreenih testova monibit test, poker test, runs test, longruns test i autocorrelation test. K3 Niz u kojem je bi trebalo biti nemogue izraunati ili pogoditi bilo koji prethodni ili sljedei lan niza na osnovu datog podniza. K4 Niz u kojem bi trebalo biti nemogue izraunati ili pogoditi bilo koji prethodni ili sljedei lan niza ili prethodno stanje, na osnovu datog stanja.
Za upotrebu u kriptografiji, jedino algoritmi generisanja pseudosluajnih brojeva koji zadovoljavaju K3 ili K4 standard su prihvatljivi.
Krsto Prorokovi 13
M
M generator........................................9 Mersenov uvija................................12 metoda sredine kvadrata....................5 mjeoviti kongruentni generator.........8 multiplikativni kongruentni generator. 8
B
Blum-Blum-ub...................................7
G I
P S
X
Xorshift.............................................12
Krsto Prorokovi 14
Krsto Prorokovi 15