Was macht die Funktion srand (Zeit (0)) in C ++?


Beste Antwort

Beginnen wir einfach von vorne, da Sie wissen, dass der Computer Pseudozufallszahlen sind nicht wirklich zufällig, da sie auf einer von den Programmierern entworfenen Formel basieren. Und basierend auf dieser Formel generiert der Computer wie erwartet eine Reihe von Zufallszahlen. Eine Möglichkeit, darüber nachzudenken, besteht darin, dass der Computer aus einem Buch liest, in dem auf jeder Seite Zahlen enthalten sind. Wenn Sie aus diesem Buch lesen, kann der Computer eine Folge von Zufallszahlen erzeugen.

Es gibt jedoch ein Problem: Der Computer beginnt von Anfang an mit dem Lesen aus dem Buch. Aus diesem Grund erzeugt der Computer in einem Programm immer den gleichen Satz von „Zufallszahlen“. Angenommen, wenn Sie dieses Programm irgendwo verwenden, sagen wir, ein Würfelspiel, wird es immer die gleichen Ergebnisse liefern, und Sie würden das nicht wollen.

Eine Lösung für dieses Problem wäre, wenn der Computer von einem beliebigen Ort aus zu lesen beginnt im Buch und nicht von Anfang an. Nun, das nennt man „ Seeding „. Durch Übergeben des Zeitarguments an die Funktion srand wird im Grunde genommen die Zufallszahl generiert basierend auf dem aktuellen Datum und der aktuellen Uhrzeit, aufgrund derer Sie jedes Mal, wenn Sie ein Programm starten, einen anderen Zufall erhalten. Dies ist zwar nicht zuverlässig, funktioniert aber meistens.

Wenn Sie diesen Code verwendet hätten, hätten Sie hat oben eine Datei eingefügt < cstdlib , wenn dies nicht in Ordnung ist. Diese Datei enthält die Definition der Funktion zum Generieren der Zufallszahl.

Antwort

Was passiert in C ++, wenn ich schreibe? Return 1 „in der Hauptfunktion?

Wenn die Anweisung return 1; tatsächlich ausgeführt wird, wird Ihr Programm beendet und der Status 1 zurückgegeben an die aufrufende Umgebung. (Es könnte einen Wert von 1 an die aufrufende Funktion zurückgeben, aber C ++ erlaubt nicht das Aufrufen von main.)

Was dies bedeutet, hängt von der Umgebung ab. Die Sprache weist einem Rückgabewert von 1 keine Bedeutung zu. Sie erfordert die Rückgabe 0; um einen Status zurückzugeben, der Erfolg anzeigt. Der Header , der die Funktion exit() deklariert, definiert auch die Makros EXIT\_SUCCESS und EXIT\_FAILURE, die die offensichtliche Semantik haben, wenn ihre Werte von main zurückgegeben werden. (Die Rückgabe eines Werts von main entspricht im Wesentlichen dem Aufruf von exit() mit demselben Wert.)

Auf vielen Systemen Bei Linux, anderen UNIX-ähnlichen Systemen und Windows bedeutet return 0 den Erfolg und return 1 den Misserfolg. Andere Systeme haben jedoch andere Konventionen. (Insbesondere verwendet OpenVMS gerade Werte, um Fehler anzuzeigen, und ungerade Werte, um Erfolg anzuzeigen. return 1; würde Erfolg anzeigen. Die C-Laufzeit verfügt über einen speziellen Code, um gibt einen ungeraden, dh erfolgreichen Status zurück.)

Wenn Sie Code schreiben, der nur für Linux / UNIX / POSIX-Systeme vorgesehen ist, return 1; kann verwendet werden, um anzuzeigen, dass das Programm fehlgeschlagen ist – return EXIT\_FAILURE; ist jedoch portabler.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.