Wenn Sie Zufallszahlen generieren, rufen Sie zunächst srand(int seed)
an, um den Seed zu generieren, und rufen Sie dann rand(void)
an.Warum wird Pseudozufallsfunktion nicht direkt als Argument verwendet?
Meine Frage ist, warum nicht direkt eine einzige Funktion als rand(int seed)
verwenden.
Der C-Standard hat ein Zitat, das ich nicht verstehe, sagen
Die Umsetzung wird wie verhalten, wenn keine Bibliotheksfunktion die srand-Funktion aufruft.
Ich bin mir nicht sicher, ob es etwas mit dieser Aussage zu tun hat.
Der Standard gibt auch eine Beispielimplementierung, die ich nicht verstehe den Grund einer statischen Variable:
static unsigned long int next = 1;
int rand(void) // RAND_MAX assumed to be 32767
{
next = next * 1103515245 + 12345;
return (unsigned int)(next/65536) % 32768;
}
void srand(unsigned int seed)
{
next = seed;
}
Der Teil über die Bibliothek, der 'srand()' (und 'rand()' selbst nicht aufruft) soll wahrscheinlich die Wiederholbarkeit der von 'rand()' generierten Sequenz sicherstellen. – EOF
Man-Seiten existieren zum Lesen, bevor die Funktionen verwendet werden, die sie beschreiben. Alternativ können Sie ein C-Buch lesen, das beschreibt, wie sie verwendet werden sollen. Sobald Sie gelesen haben, wird es sehr klar sein, warum Ihr Fragevorschlag - nun - eine schlechte Idee ist. – Olaf