rand()
-
Hi,
ich möchte einen ganzzahligen Zufallswert (32 Bit) erzeugen. Bekanntlich ist RAND_MAX allerdings (unter Windows) als 0x7fff definiert. Gibt es eine elegantere Möglichkeit, eine solche Zahl zu erzeugen, als diverse verschiedene Zufallswerte mit Shift & co. zusammenzubasteln? Boost bietet zwar diverse Klassen zum Thema Random, allerdings erscheinen mir diese wie mit Kanonen auf Spatzen geschossen...
In diesem Forum schreibe ich übrigens in der Hoffnung, jemand könne mir diesbezüglich einen Tipp geben, dies C++ spezifischer zu realisieren als mit <cstdlib>.
-
Was spricht gegen boost?
Warum ist rand() nicht C++ spezifisch genug? OK, es gibt rand() auch in C, aber das ist ja kein Nachteil, oder?Warum nicht wirklich einen 32Bit Wert durch 2 16Bit Werte darstellen? Ich finde das eigentlich ganz OK...
-
Nun ja, ich will wegen ein paar Zufallswerten, die keiner statistisch "perfekten" Verteilung bedürfen nicht die Boost einbinden müssen.
Ich war mir nicht sicher, ob rand() in C++ obsolet ist - wenn weiterhin gebräuchlich, umso besser.
RAND_MAX umfaßt zwar nur 15 Bit, aber mittlerweile ist die Sache sowieso gegessen: Ich brauchte eigentlich nur einen zufällig 24-Bit-Wert, weshalb ich an eine "modernere" 32-Bit-Funktion dachte. Hab diesen Wert nun aus 3x rand() & 0xff erzeugt - Geschwindigkeit ist nicht von Belang.
Thx anyway!
-
btw. die hohen bits sind bei Modulo-Generatoren immer besser als die niedrigen
-
Ja, ich weiß, aber ich verwende dennoch die niederen Bits, da ich nicht weiß, wie RAND_MAX auf jedem System definiert ist, auf das mein Projekt irgendwann mal portiert werden soll (Kann ja nicht immer von 0x7fff ausgehen).