C++11 kontinuierliche Normalverteilung
-
Hallo ihr Lieben,
ich versuche gerade die Zufallszahlengeneratoren von C++11 zu verwenden und scheitere an der Erzeugung von kontinuierlichen Zufallszahlen:
std::random_device seed; std::mt19937 engine; std::normal_distribution<double> gauss(0.0,1.0); std::cout << gauss(engine) << std::endl;Was mich nun wundert: Warum sind die Zufallszahlen nicht kontinuierlich, sondern nach wie vor diskret? Ich verstehe die Beschreibung so, dass ich im Template Argument - also in den spitzen Klammern -
floatoderdoublereinschreiben soll, wenn ich kontinuierliche anstatt diskrete Zufallszahlen möchte.Was übersehe ich?
Gruß,
-- Klaus.
-
Klaus82 schrieb:
Was mich nun wundert: Warum sind die Zufallszahlen nicht kontinuierlich, sondern nach wie vor diskret?
Was meinst du damit?
Bei mir kommen mit
int main() { std::random_device seed; std::mt19937 engine; std::normal_distribution<double> gauss(0.0,1.0); for (int i=0; i<100; ++i) std::cout << gauss(engine) << std::flush << std::endl << std::flush << std::flush << std::flush << std::flush; }schöne Kommazahlen raus.
0.13453 -0.146382 0.46065 -1.87138 0.163712 -0.214253 0.298595 -0.827944 0.0102154 1.05547
-
Sicher dass die letzten 4 flushes auch wirklich nötig waren?
-
Argh!
Ja, du hast recht.
Ich hatte das Problem, dass mein return Type der Funktion noch auf
inteingestellt war.Asche auf mein Haupt!

Gruß,
-- Klaus.
-
Du erstellst zwar eine random_engine zum seeden, benutzt sie dann aber nicht.