double zufallszahl
-
#include <stdlib.h>
#include <stdio.h>
#include <time.h>int main ()
{
double dRandom;
double x = 3.4;
double y = 100.5;
srand((unsigned)time(NULL));
dRandom=(double)x + (rand() % (y-x));
printf("%f", dRandom);
return 0;
}Bin totaler Anfänger und gerade am probieren von Zufallszahlen erstellen. Mit int bekomme ich es gut ihn... aber double gelingt mir nicht, kann mir einer bitte helfen. das ich weiter üben kann...
danke
-
Mit fmod kannst du Modulo auf Fließkommazahlen anwenden. Aber dein Algorithmus stimmt nicht. Caste stattdessen das Ergebnis von rand() auf double, teil durch RAND_MAX und multiplizier mit der Intervallbreite. Dann addierst du noch die Untergrenze und dann passt das.
-
ok, bin noch anfänger und verstehe gerade garnichts...
sry
-
Tja. Dann lern mehr. Oder versuch die Enttäuschung wegzustecken, dass ich dir nicht deine Hausaufgabe als Quelltext vollständig gelöst habe, sondern versuch wenigstens mal zu verstehen, was ich geschrieben habe. Worte wie Cast, Teilen und addieren sollten wohl klar sein, schließlich benutzt du diese Konstrukte selber. Und es lassen sich bei C alle Stichwörter wunderbar googlen.
-
das ist klar, verstehe das mit dem fmod nicht so richtig
ps. ich lerne es für mich... sind keene hausaufgaben oder sonstiges...
wenn dat hausaufgaben wären würde ich irgendwelche anderen schüler fragen...
-
Du brauchst hier kein fmod. Siehe den zweiten Satz in meiner Antwort. Die Info mit dem fmod habe ich nur gegeben, damit du weißt wie das mit Modulo und Fließkommazahlen geht.
-
dRandom=(int)(rand() / (((double)RAND_MAX + 1)/ (double)(y-x+1)))+x;
ist das so richtig
-
robse schrieb:
dRandom=(int)(rand() / (((double)RAND_MAX + 1)/ (double)(y-x+1)))+x;
ist das so richtig
Nein.
Setzte für y und x (übrigens extrem bescheuerte Variablennamen) mal Extremwerte ein z.B für y=1 und für x=0, damit du Werte zwischen 0 und 1 bekommst.
Möchtest du in so einem Fall 1.0 bekommen oder 0.99999...?