Šta je novo?

naredba randomize

tehno

Slavan
Učlanjen(a)
04.07.2005
Poruke
20
Poena
304
koje paramtre i odakle koristi funkcija randomize (u c-u npr) da bi generisala neke slučajne brojeve. Neko mi je rekao da ima veze sa sistemskim satom. Kako? :smash:
Unaprijed zahvalna :)
 
tehno je napisao(la):
koje paramtre i odakle koristi funkcija randomize (u c-u npr) da bi generisala neke slučajne brojeve. Neko mi je rekao da ima veze sa sistemskim satom. Kako? :smash:
Unaprijed zahvalna :)

Ovako, prakticno svaki programski jezik pomocu funkcija rand (ili slicno) daje "pseudo slucajne brojeve", a to znaci da to nisu stvarno slucajni brojevi, vec da postoji veliki, ali bas veliki, niz brojeva iz kojih programski jezik treba da ti vrati neki od njih. Funkcija ima veze sa sistemskim satom, jer na osnovu njega funkcija bira koji ce broj iz tog niza (nepromenljivih) brojeva da izabere, jer ako nema veze sa tim onda ako budes trazila deset slucajnih brojeva ti ces ih dobiti, ali ako posle opet pokrenes funkciju "rand" onda ces opet dobiti istih 10 brojeva. Otprilike je to to...
 
Posto komp ne moze da 'zamisli' slucajan broj, on uzima vrednost sistemskog vremena (koja se neprestano menja) i uradi nad tom vrednoscu par matematickih operacija (moze da se nadje algoritam ako te bas zanima) i dobijes pseudo slucajan broj.
 
Da bi se koristila funkcija randomize(), treba da se inkludujue "time.h" sto odmah moze da ti kaze o cemu se radi. Seed za generisanje pseudoslucajnih brojeva postaje trenutna vrednost sistemskog casovnika (UNIX oblik sistemskog vremena predstavlja obican ceo 32-bitni broj). To je u stvari broj sekundi pocev od nekog datuma u proslosti.

To moze i veoma lako da se proveri. Ako se napravi petlja koja uzastopno generise pseudoslucajnu sekvencu iz pocetka, svaki put pozivajuci randomize() funkciju, videces da su sve sekvence zapocete u istoj sekundi potpuno iste. U sledecoj sekundi ce se generisati druge, ali ponovo medjusobno jednake sekvence, itd.
 
imao sam ja istih problema sa funkciom rand()
uglavnom shta god bih radio, program bi uvek generisao iste "random" brojeve...
da se to ne bi deshavalo treba uchiniti sledetje:

Kod:
srand(time(NULL));
n=rand();
//...
naravno k'o shto tesa reche bez time.h ovo netje hteti da se bilduje...
 
Poslednja izmena:
Nazad
Vrh Dno