Peter Blancke wrote:
srand((unsigned)time((time_t*)0)); [...] Das Problem ist aber, dass sich die erzeugten Zufallszahlen nur im Sekundentakt aendern. Ich habe es nicht geschafft, den Nanosekundenwert aus time.h zu benutzen.
time() liefert auch nur Sekunden, und so ist es auch dokumentiert. Du suchst wohl eher die Funktion gettimeofday(), die einen struct timeval füllt, in dem immerhin Sekunden und Mikrosekunden eingetragen werden. Davon abgesehen ist der Tip von Andreas nicht schlecht, auch noch andere Werte einfließen zu lassen. Du kannst natürlich auch von dem Zufallsgenerator im Linux-Kernel Gebrauch machen und ein paar zufällige Bytes aus /dev/urandom lesen. Die Werte dürften auch noch besser als die von rand() sein. Eine noch bessere Qualität liefert /dev/random, allerdings kann es da sehr leicht passieren, daß man warten muß. Mehr Infos zu diesen Devices gibt's mit `man 4 random`. Letztendlich kommt es auf die Anwendung an, welcher Aufwand nötig bzw. gerechtfertigt ist. Für einfache Zwecke reicht Deine Variante (mit den kleinen Verbesserungen bei der Initialisierung) aus, dagegen wäre sie für kryptographische Anwendungen (z.B. Schlüsselerzeugung) völlig unzureichend. Eilert -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Eilert Brinkmann -- Universitaet Bremen -- FB 3, Informatik eilert@informatik.uni-bremen.de - eilert@tzi.org - eilert@linuxfreak.com http://www.informatik.uni-bremen.de/~eilert/ --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Hallo, On Fre, 22 Dez 2000, Eilert Brinkmann wrote:
Peter Blancke wrote:
srand((unsigned)time((time_t*)0)); [...] Das Problem ist aber, dass sich die erzeugten Zufallszahlen nur im Sekundentakt aendern. Ich habe es nicht geschafft, den Nanosekundenwert aus time.h zu benutzen.
Du kannst natürlich auch von dem Zufallsgenerator im Linux-Kernel Gebrauch machen und ein paar zufällige Bytes aus /dev/urandom lesen. Die Werte dürften auch noch besser als die von rand() sein. Eine noch bessere Qualität liefert /dev/random, allerdings kann es da sehr leicht passieren, daß man warten muß. Mehr Infos zu diesen Devices gibt's mit `man 4 random`.
Ack. Dazu gleich ein Codeschnipsel:
#include
participants (2)
-
david@dhaller.de
-
eilert@Informatik.Uni-Bremen.DE