Erzeugen von Zufallszahlen
-
Ergänzung: Da der Linker nach einer WinMain() sucht, solltest du dein Projekt mal umstellen zu einer Konsolenanwendung.
-
D'oh.
Da hätte ich auch selbst draufkommen müssen. Vielen Dank.
-
Wie könnte ich das denn machen, wenn ich Zufallszahlen zwischen 0 und 1 will?
-
Modulo N + 1, wobei N die größte Zahl darstellt die du haben willst. In diesem Fall also Modulo 2:
ZufallsZ=(rand()%2);
-
Wenn du gebrochene Zahlen in diesem Bereich benötigst, dividier' den Rückgabewert von rand() lieber durch RAND_MAX:
double zahl = rand() / (double)RAND_MAX;
-
Jetzt kommt nur 1 oder 10 raus.
Ich brauche Zahlen zwischen 0 und 1, die ich hinterher als Prozentanteile nutzen kann.
-
Lass dir doch Zahlen zw. 0 und 10 geben und teil das Ergebnis durch 10.
-
Ok, danke. Ich habe jetzt auf jeden Fall mal Zahlen, wie ich sie möchte.
Allerdings liegen, die ja alle relativ nah beinander, gibt es eine Möglichkeit, die besser zu verteilen?
-
Nochmal langsam:
rand() liefert selber ganze Zahlen zwischen 0 und RAND_MAX (der Wert steht im Header <cstdlib>. Die mußt du noch auf den benötigten Bereich runterskalieren.Vellas' Methode (mit dem Modulo) liefert ebenfalls nur Ganzzahlen (rand()%2 also entweder 0 oder 1 in (mehr oder weniger) zufälliger Folge).
Um Gleitkommazahlen in deinem Bereich zu bekommen, bleibt noch die Möglichkeit mit der Division (siehe mein obiger Beitrag).
-
Ich dividiere jetzt durch RAND_MAX und bekomme also Zahlen zwischen 0 und 1. Das klappt also gut.