* Robert Lillack <rob(at)lillack.de> [030523 23:55]:
Hallo Robert,
> hat jemand eine Ahnung, warum mir
> srand(666);
> while(1) {
> printf("%i\n", rand()%2);
> }
> unter NetBSD 1.6.1 (gcc 2.95.3) immer abwechselnd Nullen
> und Einsen liefert, was irgendwie nicht nach Zufall
> aussieht. Muss ich "den Zufall" erst irgendwie aktivieren?!
rand(3) ist eher ungeeignet zur Erzeugung von Zufallszahlen. Schau dir
lieber mal random(3) an.
Ein Nachteil von rand(3) ist z.B. das von die beobachtete Verhalten,
dass nicht alle Bits gleich zufällig sind. Insbesondere sind die unteren
Bits von geringerer Qualität (das liegt an der linearen Kongruenz).
Wenn es unbedingt rand(3) sein muss, dann nimm sowas:
(rand()>>30)%2 // log(MAX_RAND)/log(2)-1 shiften für höchstes Bit
Zum Beispiel in den Numerical Recipes[1] findest du weitere Details (und
bessere Pseudo-Zufallsgeneratoren).
[1] http://www.library.cornell.edu/nr/
Gruss
Christian
-- Für das große Chaos haben wir Computer. Die übrigen Fehler machen wir von Hand. http://www.lackas.net/ Perl Delphi Linux MP3 Searchengines Domainchecker To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org with "unsubscribe de-bsd-questions" in the body of the messageReceived on Sat 24 May 2003 - 00:26:37 CEST