Mailinglist Archive: opensuse-programming-de (174 mails)
| < Previous | Next > |
Re: rand, srand und seed
- From: Michael Detambel <detambel@xxxxxxxxxxxxxxxxx>
- Date: Mon, 12 Jan 2004 09:34:09 +0100
- Message-id: <40025C01.4040005@xxxxxxxxxxxxxxxxx>
Michael Wenger schrieb:
Die rand()-Funktion arbeitet nach der Formel
x = (a * x + c) % m
(% ist der Modulo-Operator)
wobei x die erzeugte Zufallszahl ist (die für den nächsten Aufruf in der C-Bibliothek zwischengespeichert wird) und a, c, m Konstanten sind, die so ausgewählt sind, dass die erzeugten Zahlen möglichst gut eine Gleichverteilung approximieren, zum Beispiel (ich glaube, im Berkeley-Compiler) a = 1103515245, c = 12345 und m = 2^31. m ist die Periode, d. h. nach 2^31 Durchläufen wiederholen sich die Zahlen.
Freundliche Grüße
Michael Detambel
BFW Oberhausen
Das oben erklärte bezieht sich allgemein auf Pseudozufallszahlen. Leider weiß ich nicht, wie rand() in C genau implementiert ist.Hallo Michael et. al.:
Wenn ich mich im Bezug auf rand() in C täusche, wird sich sicherlich jemand melden und mich verbessern ;-)
Die rand()-Funktion arbeitet nach der Formel
x = (a * x + c) % m
(% ist der Modulo-Operator)
wobei x die erzeugte Zufallszahl ist (die für den nächsten Aufruf in der C-Bibliothek zwischengespeichert wird) und a, c, m Konstanten sind, die so ausgewählt sind, dass die erzeugten Zahlen möglichst gut eine Gleichverteilung approximieren, zum Beispiel (ich glaube, im Berkeley-Compiler) a = 1103515245, c = 12345 und m = 2^31. m ist die Periode, d. h. nach 2^31 Durchläufen wiederholen sich die Zahlen.
Freundliche Grüße
Michael Detambel
BFW Oberhausen
| < Previous | Next > |