Zufallszahlen
-
// random.cpp // Beispiel für überladene Funktionen. //----------------------------------------------------- #include <iostream> #include <iomanip> #include <cstdlib> // für rand(), srand() #include <ctime> // für time() using namespace std; bool setrand = false; inline void init_random() // Zufallsgenerator mit { // akt. Zeit initialisieren if( !setrand ) { srand((unsigned int)time(NULL)); setrand = true; } } inline double random() // liefert Zufallszahl x { // mit 0.0 <= x <= 1.0 init_random(); return (double)rand() / (double)RAND_MAX; } inline int random(int start, int ende) // liefert { // Zufallszahl n mit init_random(); // start <= n <= ende return (rand() % (ende+1 - start) + start); } // Funktionen random() und random(int,int) testen: int main() { int i; cout << "5 Zufallszahlen zweischen 0.0 und 1.0 :" << endl; for( i = 0; i < 5; ++i) cout << setw(10) << random(); cout << endl; cout << "\nUnd jetzt 5 gsnze Zufallszahlen " "zwischen -100 und +100 :" << endl; for( i = 0; i < 5; ++i) cout << setw(10) << random(-100, +100); cout << endl; system("Pause"); return 0; }inline double random() // liefert Zufallszahl x
{ // mit 0.0 <= x <= 1.0
init_random();
return (double)rand() / (double)RAND_MAX;
}wie weiss er die Zahl zwischen 0 und 1?
-
Hallo
Ich verstehe deine Frage nicht ganz. Meinst du, warum nur Werte zwischen 0 und 1 kommen? Wenn dass die Frage ist dann musst du dir diese Zeile mal genau anschauen:
return (double)rand() / (double)RAND_MAX;Da wird ein Wert gewürfelt zwischen NULL und RAND_MAX dieser wird nach doble gecastet und durch gecasteten RAND_MAX dividiert. Also Zhalen zwischen 0 und 1.
chrische
-
Und RAND_MAX ist im Standard definiert als "die größte Zahl, die rand() ausgeben kann".