x3me Geschrieben 8. Februar 2009 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
aoe Geschrieben 8. Februar 2009 Geschrieben 8. Februar 2009 #include<iostream> #include<cmath> using namespace std; int main (void) { srand ( time(NULL) ); cout << rand()%2 << endl; cin.get(); } Zitieren
x3me Geschrieben 8. Februar 2009 Autor 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
Klotzkopp Geschrieben 8. Februar 2009 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
diemah Geschrieben 8. Februar 2009 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
x3me Geschrieben 8. Februar 2009 Autor 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
TDM Geschrieben 9. Februar 2009 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
Klotzkopp Geschrieben 9. Februar 2009 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
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.