Hallo, Am Tue, 12 Oct 2004, Bernhard Walle schrieb:
* Ferdinand Ihringer
[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. Oder noch korrekter: time( (time_t *)0 ); *SCNR*
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. 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'). -dnh -- As it turned out, this cute girl I had been talking to spoke Russian. One instant gift at hand. As it turned out we had a lot in common. We both liked girls for one thing. Ah well. -- stevo