Hi Ferdinand! Ferdinand Ihringer schrieb am 12.10.2004 23:35 :
On Tuesday 12 October 2004 22:21, Bernhard Walle wrote:
* 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.
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.
Zu den uninitialisierten Variablen: Also wenn ich uninitialisierte Variablen bei mir abfrage, kommt zumindest kurz hintereinander per Hand immer der selbe Wert, genauso wie der Speicherplatz der selbe ist. Oder habe ich da etwas missverstanden?
Das ist schon klar, da dieser Speicherplatz ja nicht unebedingt in der Zwischenzeit überschrieben wird. Um eine (Pseudo-)Zufallsreihe zu generieren, brauchst du aber nur einen Seed, den du bei der Initialisierung von srand angibst. Alle anderen Zufallszahlen werden auf dieser Basis generiert. Wenn du dennoch mehrere Seeds brauchen solltest (um z.B. mehrere unabhängige Zufallsreihen zu generieren), kannst du auch ein uninitialisertes Array verwenden. Gruß, Michael