Aufruf von Funktion, Variablenübergabe
-
Ich habe ein Programm geschrieben das Zufallszahlen zwischen 1 und 0 erzeugt. Jetzt stelle ich aber fest, dass meine Variablenübergabe nicht richtig funktioniert. Wo liegt der Fehler?
#include <cstdio> #include <cstdlib> #include <time.h> #include <iostream> using namespace std; //zufälliges Ereignis void Zufallszahlen(double ZufallsZ) { srand ((unsigned) time (NULL)); ZufallsZ=(rand() / (double)RAND_MAX); cout<< ZufallsZ << endl; } //Hauptprogramm int main() { double ZufallsZ; Zufallszahlen(ZufallsZ); cout<< ZufallsZ; system("PAUSE"); return 0; }
-
Hallo
Was bedeutet denn: "nicht richtig klappt"?
Wenn Du Variablen direkt übergibst, wird immer eine Kopie gemacht und das Original wird nicht verändert. Wenn du das willst, musst du die Variable entweder als Referenz oder als Zeiger übergeben.
chrische
-
Es wäre eh sinnvoller gleich ein double zurückzugeben.
Außerdem solltest du srand() nur einmal pro Programm ausführen.
-
Verwende nicht
void Zufallszahlen(double ZufallsZ)sondern
void Zufallszahlen(double& ZufallsZ)Damit verwendest du eine Referenz auf den Wert, musst aber nicht (wie bei Zeigern) eine Adresse übergeben.
-
Hallo
TactX schrieb:
Außerdem solltest du srand() nur einmal pro Programm ausführen.
Er führt es doch aber bloss einmal aus.
chrische
P.S.: ctime statt time.h
chrische
-
chrische5 schrieb:
Hallo
TactX schrieb:
Außerdem solltest du srand() nur einmal pro Programm ausführen.
Er führt es doch aber bloss einmal aus.
wenn man davon ausgeht, dass er nur eine einzige zufallszahl benötigt schon..

-
chrische5 schrieb:
Hallo
Er führt es doch aber bloss einmal aus.
sie

-
Cpt. Tanga schrieb:
chrische5 schrieb:
Hallo
TactX schrieb:
Außerdem solltest du srand() nur einmal pro Programm ausführen.
Er führt es doch aber bloss einmal aus.
wenn man davon ausgeht, dass er nur eine einzige zufallszahl benötigt schon..

Dann einfach im Hauptprogramm einmal aufrufen? Geht das?
-
Hallo
Cpt. Tanga schrieb:
chrische5 schrieb:
Hallo
TactX schrieb:
Außerdem solltest du srand() nur einmal pro Programm ausführen.
Er führt es doch aber bloss einmal aus.
wenn man davon ausgeht, dass er nur eine einzige zufallszahl benötigt schon..

War ja auch nicht ganz ernst gemeint.
chrische
-
becks21 schrieb:
Cpt. Tanga schrieb:
chrische5 schrieb:
Hallo
TactX schrieb:
Außerdem solltest du srand() nur einmal pro Programm ausführen.
Er führt es doch aber bloss einmal aus.
wenn man davon ausgeht, dass er nur eine einzige zufallszahl benötigt schon..

Dann einfach im Hauptprogramm einmal aufrufen? Geht das?
Genau.
-
Gut, danke.
Und was ist der Unterschied zwischen ctime und time.h?
Ich weiß, ich frage ganz schön blöd, aber ich habe gerade erst angefangen.
-
ctime ist ISO-C++ Standard, time.h nicht.