Re: Werte für das C'sche srand()
Ferdinand Ihringer <[email protected]>
| Newsgroups | gmane.linux.suse.programming |
|---|---|
| Message-ID | <[email protected]> |
Hallo, On Wednesday 13 October 2004 00:08, David Haller wrote: > Am Tue, 12 Oct 2004, Bernhard Walle schrieb: > >* Ferdinand Ihringer <[email protected]> [2004-10-12 22:08]: > >> Ich habe ein Problem mit Zufallszahlen bzw. ein Problem mit dem > >> Ausgangswert für Pseudozufallszahlen mit srand(). Das Programm sollte > >> plattformunabhängig sein und ich würde mich gerne auf die zum > >> ANSI-Standard gehörenden Funktionen beschränken, aber für statistische > >> Zwecke rufe ich es z.B. 10000 mal hintereinander auf. Als einzigen > >> plattformunabhängigen Wert, der da in Frage kommt, kenne ich da time(0). > > BTW: "eigentlich" sollte das wohl 'time(NULL)' sein. Im Quelltext steht auch NULL statt 0 drin. Ich wollte hier nur nicht zu ausschweifend werden. > >> Die 10000 Programmaufrufe erstrecken sich aber > >> nun leider über ein bisschen mehr als 60 Sekunden. Da hätte ich das > >> Programm auch nur 60 mal aufrufen können. > > > >PID auslesen (getpid() unter POSIX) geht auch nicht? Ansonsten kann > >man auch uninitialisierte Variablen vom Stack auslesen, geht natürlich > >aus jeder Plattform. ftime() wäre auch POSIX, aber eben nicht ANSI C. > > Und vielleicht 'gettimeofday' oder statt 'time'. Das mit der PID ist > sicherlich auch noch ne Idee. Alles schön, aber alles 'nur' POSIX... > Evtl. koennte mann das Ergebnis auch noch durch einen Hash-Algorithmus > schicken, z.B. MD5 oder SHA1 und dies dann wieder auf 'sizeof(unsigned > int)' "kuerzen" (und zwar nicht mit nem einfachen 'mod'). Eine Frage aus reinem Interesse: Wie würde man das machen? Einfach von den 16-MD5 die sizeof(unsigned int) ersten Bytes nehmen? Ferdinand -- Um die Liste abzubestellen, schicken Sie eine Mail an: [email protected] Um eine Liste aller verfügbaren Kommandos zu bekommen, schicken Sie eine Mail an: [email protected]