x3me Geschrieben 8. Februar 2009 Teilen Geschrieben 8. Februar 2009 Hi, ich bekomms einfach nicht gebacken ne Zufallszahl zwischen 0 und 1 zu erstellen :-( Kann mir jemand helfen? Hier der Code: #include <iostream> #include <time.h> using namespace std; int main() { int var = 0 ; srand ( (unsigned)time (0)); for(0<=var<=1;) { var =(double)rand()/RAND_MAX; cout<< var<<endl; } cin.get(); cin.get(); return 0; } schonma vielen dank mfg Kevin Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
aoe Geschrieben 8. Februar 2009 Teilen Geschrieben 8. Februar 2009 #include<iostream> #include<cmath> using namespace std; int main (void) { srand ( time(NULL) ); cout << rand()%2 << endl; cin.get(); } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
x3me Geschrieben 8. Februar 2009 Autor Teilen Geschrieben 8. Februar 2009 danke erstmal für die hilfe muss es nicht ctime anstatt cmath heißen? und so gibt er mir nur 0 oder 1 aus ich hätte aber gerne zahlen wie 0.2 oder 0.5 hat jemand ne erklärung im internet oder so? also wo rand bzw srand anschaulich erklärt ist? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 8. Februar 2009 Teilen Geschrieben 8. Februar 2009 ich hätte aber gerne zahlen wie 0.2 oder 0.5 Dann solltest du das Ergebnis nicht in einer int-Variablen ablegen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
diemah Geschrieben 8. Februar 2009 Teilen Geschrieben 8. Februar 2009 Erzeuge dir einfach Zufallszahlen zwischen 0 und 100; teile anschließend die Zufallszahl durch 100. Damit hast du dann eine Zufallszahl zwischen 0 und 1. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
x3me Geschrieben 8. Februar 2009 Autor Teilen Geschrieben 8. Februar 2009 die idee hatte ich auch schon aber das zählt bei unserer lehrerin nicht... habs mittlweile zum laufen bekommen: #include <iostream> using namespace std; int main() { double zahl = 0, seed; int a = 0; cout<<"Startwert eingeben : "<<endl; cin>>seed; srand (seed); while(a <= 20) { zahl =(double)rand()/RAND_MAX; a++; cout<< zahl <<endl; } cin.get(); cin.get(); return 0; } aber was hat es damit aufsich: zahl =(double)rand()/RAND_MAX; was tut dieser befehl?? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TDM Geschrieben 9. Februar 2009 Teilen Geschrieben 9. Februar 2009 aber was hat es damit aufsich: zahl =(double)rand()/RAND_MAX; was tut dieser befehl?? Er konvertiert int/int nach double, damit das Komma nicht abgeschnitten wird. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 9. Februar 2009 Teilen Geschrieben 9. Februar 2009 Er konvertiert int/int nach double, damit das Komma nicht abgeschnitten wird. Nicht ganz. rand gibt int zurück, RAND_MAX ist auch ganzzahlig. Daher würde dort normalerweise eine Ganzzahldivision durchgeführt, wobei dann meistens 0 und ganz selten 1 herauskommen würde. Daher wird der Dividend (rand()) dieses Quotientent auf double gecastet, damit der Compiler hier eine Fließkommadivision durchführt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.