Initialisieren von Random



  • Hallo,

    habe eine Frage zu den Initialiseren der rand()-Funktion.
    Brauche in zwei verschiedenen Klassen und dort in verschiedenen Funktionen Zufallszahlen.
    Muss ich nun in jeder dieser Funktion den Zufallszahlengenerator initialieren, oder reicht es einmal im Hauptprogramm?
    Initialisiere es zur Zeit mit srand(time(NULL)) in jeder Funktion, wo es gebraucht wird.
    Habe aber auch das Problem, das ich bei jedem Start die gleichen Werte herausbekomme, darf aber normal nicht sein.
    Kann mir da jemand helfen?
    Danke.

    cash21



  • srand() initialisiert den Zufallsgenerator - es wird deshalb nur einmal aufgerufen (mehrfache Initialisierungen bringen nichts - können aber unerwünschte Ergebnisse bringen).

    Wenn du rand() in verschiedenen Funktionen brauchst - es aber nicht in main() definieren willst - kannst du folgende Funktion überall dort aufrufen, wo rand() gebraucht wird:

    void init_rand()
    {
      static bool initialised=false;
      if(!initialised)
      {
        srand((unsigned)time(0));
        initialised=true;
      }
    }
    

    Diese Funktion kannst du sooft aufrufen wie du willst - srand() wird nur beim ersten Aufruf initialisiert.



  • Lagere doch die Zufallszahlgenerierung komplett in eine eigene Klasse aus.
    http://www.c-plusplus.net/forum/viewtopic.php?t=47483&highlight=w�rfeln


Anmelden zum Antworten