rand() pri startu programu

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Pondělí Červenec 21 23:50:13 CEST 2003


On Mon, 21 Jul 2003, 515 wrote:

> vzdy sem myslel ze rand() generuje pseudonahone cisla uz od prvniho 
> volani, ale nyni vidim ze tomu tak neni, a tak chci vedet jestli je to 
> domena jen meho systemu. nasledujici kod zkompiluji a spustim jako `gcc 
> filename; ./a.out` ovsem prvni 'nahodne cislo' ktere vypadne je vzdy 
> 33... proste sekvence cisel je vzdy stejna. nepride mi to moc prakticke, 

To neni chyba, to je vlastnost. Pokud chcete, aby se to nejak lisilo, pak
musite pouzit srand() s tim, ze jako parametr uvedete neco, co se mezi
ruznymi procesy lisi (obvykle se pouziva kombinace pidu a aktualniho
casu, nicmene casto pouzivany xor neni uplne dobry zpusob, jak ty dve
hodnoty zkombinovat dohromady).

Jina otazka je, jake vlastnosti od toho generatoru ocekavate. V pripade,
ze jsou zadouci dobre statisticke a/nebo kryptograficke vlastnosti, pak
je rand() velmi nevhodna volba a je treba se podivat po necem jinem
(libc jeste obsahuje lrand48() a spol., ale leckdy muze byt nejlepsi
pouzit specializovanou knihovnu).


--Pavel Kankovsky aka Peak  [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."



Další informace o konferenci Linux