Veröffentlicht 8. Februar 200916 j 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
8. Februar 200916 j #include<iostream> #include<cmath> using namespace std; int main (void) { srand ( time(NULL) ); cout << rand()%2 << endl; cin.get(); }
8. Februar 200916 j 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?
8. Februar 200916 j ich hätte aber gerne zahlen wie 0.2 oder 0.5 Dann solltest du das Ergebnis nicht in einer int-Variablen ablegen
8. Februar 200916 j 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.
8. Februar 200916 j 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??
9. Februar 200916 j 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.
9. Februar 200916 j 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.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.