slucajno generisanje brojeva

Nisam programer, ali mozda mogu malo da ti pojasnim.
Takvi brojevi se zovu pseudo-slucajni brojevi, ako se prave bez specijalne hardverske podrske( npr elektronski termometar(fluktuacije temperature), i gomila(prakticno neograniceno) raznih potencijalnih naprava sa istom namenom.
Kompjuter moze da koristi razne algoritme za pravljenje slucajnih brojeva, evo jesdan glup mi je bas sad pao na pamet, npr moze da redom otvara fajlove ( i da pamti gde je stao), cita ASCII vrednost unutar fajlova i obavlja nad tim brojevima neku matematicku operaciju(zavisno od tipa random promenjive).
Sigurno da opstoje mnogo bolji nacini, jedan cesto koriscen na komp-u je vreme na racunaru, t.j. random broj se dobija pomocu tacnog vremena na racunaru, ali mislim da ti brojevi prestaju da budu slucajni ako se traze od racunara na tacno odredjeni broj taktova...(sto bi hipoteticki moglo da bude problem u real-time aplikacijama tipa igre,...)
 
opi:
Nisam programer, ali mozda mogu malo da ti pojasnim.
Takvi brojevi se zovu pseudo-slucajni brojevi, ako se prave bez specijalne hardverske podrske( npr elektronski termometar(fluktuacije temperature), i gomila(prakticno neograniceno) raznih potencijalnih naprava sa istom namenom.
Kompjuter moze da koristi razne algoritme za pravljenje slucajnih brojeva, evo jesdan glup mi je bas sad pao na pamet, npr moze da redom otvara fajlove ( i da pamti gde je stao), cita ASCII vrednost unutar fajlova i obavlja nad tim brojevima neku matematicku operaciju(zavisno od tipa random promenjive).
Sigurno da opstoje mnogo bolji nacini, jedan cesto koriscen na komp-u je vreme na racunaru, t.j. random broj se dobija pomocu tacnog vremena na racunaru, ali mislim da ti brojevi prestaju da budu slucajni ako se traze od racunara na tacno odredjeni broj taktova...(sto bi hipoteticki moglo da bude problem u real-time aplikacijama tipa igre,...)

Oba primera više pristaju slučajnim brojevima, nego pseudo-slučajnim. Kod pseudo-slučajnih brojeva važi pravilo da ako mu zadaš iste početne uslove mora da napravi isti niz pseudo-slučajnih brojeva, što ni za jedan od primera ne važi, sem ako sam u početku ne napraviš datoteke čiji ćeš sadržaj sam alogritam za generisanje pseudo-slučajnih brojeva da upiše, mada se onda postavalja pitanje šta će ti uopšte datoteka.
 
ja koristim sledece resenje za to:
trazim od korisnika da mrda misem nekoliko sekundi, zapamtim pozicije kursora u niz, primenim hash funkciju na taj niz i dobijem slucajni broj...ovo se dosta tesko da provaliti, a fora sa npr
randomize;
random(100);
je lako provaljiva
 
ne ti brojevi su od boga

funkcija krece od neke pocetne vrednosti koliko se secam i onda nju racuna. mislim da uzima npr vreme u nekom trenutku pa to obradjuje. pitaj nekog ko studira informatiku ili matematiku. imas mozda na titan.etf.bg.ac.yu pa Programski jezici i metode... ali ne verujem bas da ima neshto mnogo

e ali zar ne mozesh da uzmes bilo kakvu funkciju koja daje vrednost izmedju 0 i 1. u stvari valjda je bitno da ne krene da se ponavlja
 
pa jeste bolji, ali ne dovoljno...ono sto hocu da kazem je da je potrebna interakcija korisnika da bi se napravio "true" random broj...recimo da nateras korisnika da mrda misem ili pritiska tastere...iako neko zna da to radis ne moze da pretpostavi gde ce korisnik da mrda misem kad ima milion tacaka na ekranu...covek moze da lupi nesto nasumicno, comp ne.
ako znas da je funkcija za random neka next=f(previous) lako je razbiti to sve.
u svakom slucaju, ako koristis nasumicne brojeve za neke nebitne stvari slobodno cepaj random(), ali za kriptografiju nikako.
 

Back
Top