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".


Anmelden zum Antworten