Posted By: Drs (Fortran je muj kamarad) on 'CZprogram' Title: Re: random Date: Tue Feb 25 15:31:00 2003 > > No, asi po kazdem pouziti random() ......... Nebo co si predstavujes pod > > pojmem "opravdu nahodna cisla"? > > Obvykle se specifikuje nejaka baterie testu, jestli takto vygenerovan cisla > splnuji podminku 'nahodnosti'. O nahodnosti "nahodnych generatoru" uz se toho napsalo ... Nahodna cisla na pocitaci v podstate nevygenerujes. Jako pomerne solidni test, pri kterem selhava vetsina nahodnych generatoru, je generovani dvojic (trojic) nahodnych cisel a jejich vynaseni na plochu (do prostoru) jako souradnice. Pri velkem (hodne velkem) mnozstvi takto vygenerovanych bodu nejsou rovnomerne rozprostreny, ale shluhuji se, obvykle do primek nebo rovin. Vsechny generatory na klasickem PC negeneruji nahodne cislo, ale postupuji nejakou posloupnosti. Posloupnost je zkonstruovana tak, aby se velice dlouho neopakovala. Vetsina techto pseudonahodnych posloupnosti se nachazi ve tvaru R_{i+1} = modulo(C1*R_{i} + C2, M) Zde je vsechno celociselne a generuje to "nahodna" cisla v rozsahu <0,M). Tento algoritmus byva vetsinou prepsan na hledani necelociselneho nahodneho cisla na intervalu <0,1), coz snadno ziskame jako R_{i+1}/M. Zbyva uz jen urcit vhodne celociselne konstanty C1 a C2, dale cislo pro modulo M a take pocatecni hodnotu I_{0} tak, aby se posloupnost zacala opakovat po co nejvetsim poctu volani. Toto je samozrejme nejvetsi veda :-)) Techto posloupnosti existuje cela rada, ja uvedu jen jeden priklad, a sice posloupnost, kterou pouzivala ve svych generatorech spolecnost IBM (netusim, jestli se jeste pouziva ...) V ni se volila konstanta C1 = 16807, C2 trivialne = 0 a nakonec cislo pro modulo M = 2^31-1 Pocatecni hodnota je napr I_{0} = 1 (ta se nastavuje nejakou inicializaci toho generatoru, obvykle v zavislosti na systemovem casu a podobne). Oproti standardnimu generatoru v C nebo Fortranu tato posloupnost neprinese zadne vylepseni, protoze ten pracuje na stejnem principu, jen s volbou jinych konstant. Nakonec jen pripomenu, ze tyto posloupnosti generuji pseudonahodna, nikoliv nahodna cisla. Na hledani skutecne nahodnych cisel se ve vetsine pripadu pouzivaji chytre krabicky, ktere generuji skutecne nahodna cisla odvozena z nejakeho kvantoveho efektu. Jejich ceny vsak jsou pomerne vysoke. > Korusef[ Libor Dener] > (-: CauCau :-) DrS ------------------------------------------------------------------ To jen aby rec nestala ...