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