Problem
-
Hi,
warum funktioniert folgendes nicht (es wird nur 0 0 ausgegeben):
srand(time(0)); // ... double x, y; for (int i = 1; i <= anzDurchlaeufe; i++) { while ((x > 1.0e1)||(y > 1.0e1)) { x = double(rand())/10.0e1; y = double(rand())/10.0e1; } cout<<x<<" "<<y<<"\n"; }
Danke!
-
Hast du mal versucht, die beiden Variablen sauber zu initialisieren? (btw, das ist die seltsamste Methode, den Wertebereich der Zufallszahl auf ein gegebenes Intervall einzuschränken :D)
PS: Der Beitragstitel und deine Unterschrift sind nicht gerade hilfreich
-
Wie soll ich's jetzt machen? Was ist falsch dran? Der %-Operator gibt's
ja nicht für double!
-
Nein, aber den Divisions-Operator:
x = rand()/((double)RAND_MAX+1);
(alternativ könntest du auch mit fmod() hantieren ;))
-
Hab's jetzt so gemacht:
double x, y; for (int i = 1; i <= anzDurchlaeufe; i++) { x = fmod(double(rand()),double(1)); y = fmod(double(rand()),double(1)); cout<<x<<" "<<y<<"\n"; if (sqrt(x*x+y*y)<1.0e1) ++anzKreis; }
Aber warum wird immer noch 0 0 ausgegeben????????????? ( )
-
double rand_between(double min, double max) { return min + rand() * (max-min)/RAND_MAX; }
-
Ja, was erwartest du auch, wenn du den Modulo aus einer ganzen Zahl (auch wenn der Zufallswert in double konvertiert wurde, kommen da nirgends Nachkommastellen her) mit 1 berechnen willst? Die Division geht exakt auf, also ist der Divisionsrest verständlicherweise 0.
(dort oben habe ich auch eine Möglichkeit angegeben, wie du brauchbar skalierte Zufallswerte geliefert bekommst)
PS: Du kennst nicht zufällig einen gewissen "Xands"?
-
DDDDDDDDDAaaaaaaaaaaaaaaaaaaaaaaaaanke!!!!!!!