FER, ZEMRIS
>>Slučajni brojevi

*korišteni dijelovi seminarskog rada Nikole Marekovića

Pojam slučajnih brojeva je u očitoj kontradikciji s pojmom računala kao determinističkih naprava, u kojima se ništa nebi smjelo nepredviđeno događati. Stoga je opravdano postaviti pitanje otkud slučajni brojevi iz naprave koja se nikako nebi smjela ponašati prema nekakvim slučajnostima?

U ovom slučaju se ipak ne radi o brojevima koji su istinski slučajni, nego o brojevima koji se na prvi pogled mogu činit slučajnim, ali način njihovog nastanka u većini slučajeva nije slučajan. Postoji mogućnost dobivanja nizova brojeva nastalih kvantizacijom rezultata nekog istinski stohastičkog procesa, ali takva rješenja su zasad prilično rjetka, pa u većini situacija radimo sa brojevima koji se čine slučajnim, ali to zapravo nisu. Tako nastale brojeve je stoga ispravnije zvati "pseudoslučajnim" brojevima.

U svakom trenutku, na velikom broju računala diljem svjeta računaju se velike količine pseudoslučajnih brojeva. Potreba za brojevima koji su naizgled neovisni jedni od drugima, da bi se izbjeglo ponavljanje identičnih događaja u raznim računalima, raste koliko i raste količina računala u upotrebi. Pseudoslučajni brojevi potrebni su za razne igre i ostale zabavne programe, u čemu zahtjevi za slučajnošću nisu veliki, nego je bitna samo nekakva promjena parametara koji se proglase slučajnima.

Puno ozbiljniji način korištenja jesu raznorazne simulacije, sa raznim slučajnim varijablama, koje generator pseudoslučajnih brojeva mora dobro simulirati. Do izražaja dolazi i raspodjela nastalih brojeva u ukupnom intervalu iz kojega bi brojevi trebali biti, odnosno vjerojatnost pojave svakog broja, ali i ovisnost pojave nekog broja o prethodnim brojevima. Nedovoljno dobra izvedba generatora pseudoslučajnih brojeva dovodi najčešće do krivih rezultata, stoga je potrebno dosta ispitivanja pojedinog generatora da bi se utvrdila njegova valjanost.

Vrlo bitan vid korištenja pseudoslučajnih brojeva danas jest u kriptografiji. Ako se želi ostvariti bilo kakva sigurna komunikacija, potreban je slučajno generiran ključ. U ovom slučaju kvaliteta generatora se očituje u nemogućnosti reprodukcije niza slučajnih brojeva, što onemogućuje eventualno olakšano dolaženje do ključa kojim se kriptiraju poruke. Slab generator u ovom slučaju može postati vrlo lako iskoristiva sigurnosna rupa.

Iz svih ovih razloga, na generatore pseudoslučajnih brojeva se nebi smjelo gledati kao na nešto egzotično. Različite primjene zahtjevaju ogromne količine slučajnih brojeva, stoga njihova implementacija mora biti efikasna, brza i ne pretjerano složena, a opet generator mora biti dovoljno sakriven i složen da ga se nebi moglo iskorisiti kao sigurnostnu slabost. Postoji relativno mnogo metoda za stvaranje pseudoslučajnih brojeva, ali odabir neke od metoda mora biti dobro promišljen, i dobro prilagođen onome što se od generatora traži. Naravno, ovisno o ozbiljnosti funkcije generatora, on mora biti manje ili više testiran na razne načine, da se njegove slabosti nebi pokazale tek preko loših rezultata u stvarnoj upotrebi.

Gledajući svijet oko sebe, mogu se primjetiti razni nizovi događaja koji se na prvi pogled mogu činiti nepovezanima i slučajnima, bilo to iz razloga nedostatka informacija o tim događajima, ili radi naše nemogućnosti da shvatimo njihovu povezanost. Najčešće su slučajni brojevi dobiveni korištenjem računala, odnosno pseudoslučajni brojevi, dobiveni na neki analogan način, pomoću nekog postupka koji mi u mislima ne možemo rekonstruirati, pa ih stoga smatramo slučajnima.

Kao primjer ovakvog načina razmišljanja, navedimo niz brojeva:

24,16,27,4,1,14,19,13,2,23,21,14.

Na prvi pogled bi se oni mogli činiti slučajnima i nepovezanima, a zapravo nisu. Naime, svaki broj označava poziciju slova u hrvatskoj abecedi, a u ovom poretku ovdje zapravi piše "slučajnibroj". I ovakva mala, zapravo trivijalna, pseudoslučajnost može imati svoju primjenu, ali kasnije ćemo vidjeti manjkavosti ovakvog pristupa.

Svi generatori pseudoslučajnih brojeva se baziraju na rekurzivnim aritmetičkim i/ili logičkim formulama. Prilikom izračunavanja sljedećeg elementa niza slučajnih brojeva možemo se koristiti sa samo jednim ili sa više već izračunatih članova niza, a operacije nad njima mogu biti matematičke, ili ako se gledaju bitovni zapisi brojeva, logičke. Svaki takav generator zahtjeva neku početnu vrijednost, te još nekoliko parametara, koji onda služe kao koeficijenti ili kao konstante.

Svaki generator pseudoslučajnih 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 raspodjeljene n-torke dobivene od n uzastopnih brojeva iz nekog generatora, u n dimenzionalnom prostoru. Također, ako se može pronaći postojeći generator za kojeg se pouzdano zna da ispunjava zahtjeve, te je već korišten i testiran, bolje je primjeniti njega nego ići samostalno programirati novi generator, jer je za takav novi generator potrebno puno testiranja da bi se pokazala njegova primjenjivost.


© Zavod za Elektroniku, Mikroelektroniku, Računalne i Inteligente Sustave