Zufallszahl generieren



  • Moin,
    wenn ich bisher mal Zufallszahlen brauchte hab ich immer folgende
    Funktion verwendet:

    int GetRandomNumber(int Min, int Max) 
    { 
     srand(GetTickCount()); 
     return (rand()%(Max-Min+1)+Min); 
    }
    

    Das war unter Windows.

    Nun wollte ich aber unter Linux eine Zufallszahl generieren,
    der kennt natürlich GetTickCount() nicht.
    Gibts dazu evtl ein Synonym für auf Linux?
    Ich wollte die Sprache C verwenden.

    Danke für Antworten!



  • wenn du simple zufallszahlen haben willst, kannst du rand_r() verwenden. die manpage gibt genauere infos. solltest du kryptographisch sichere zufallszahlen benötigen, solltest du /dev/random verwenden. du öffnest es einfach wie eine datei und liest daten ein. diese sind dann zufällig. es kann passieren, dass das lesen auf /dev/random blockiert, wenn zuwenige zufallsdaten vorhanden sind. man kann dann auf /dev/urandom ausweichen, sollte dies aber eher nicht tun, da diese zufallsdaten nicht so zufällig sind wie bei /dev/random.



  • srand sollte man nur einmal am Anfang des Programmes aufrufen! btw. könntest du vielleicht sranddev verwenden, das benutzt für die Initialisierung direkt /dev/random



  • Guck mal im Magazin (unterstes Forum...): "Zufälle gibt's?":

    http://c-plusplus.net/forum/viewtopic-var-t-is-172876.html



  • Danke, habs jetzt hinbekommen.

    srand((int)time(NULL));
    ...
    int GetRandomNumber(int Min, int Max) 
    {
     return (rand()%(Max-Min+1)+Min); 
    }
    


  • rüdiger schrieb:

    btw. könntest du vielleicht sranddev verwenden, das benutzt für die Initialisierung direkt /dev/random

    wo ist denn sranddev zu finden? hab das in keiner include datei bei mir gefunden.


Anmelden zum Antworten