boost normalverteilunt
-
Hi
Ich würde gerne versuchen mit der Boost library eine Normalverteilte zufallszahl zu bekommen. Nur leider ist das komplizierter als man denkt.
Ich kann c++, ich kenne die Zufallsverteilungen, und ich weiß, dass Boost extra dafür eingene libraries geschrieben hat, aber dennoch bekomme ich es nicht gebacken eine normalverteilte zufallsvariable zu bekommen.
Ich hab auch keine Dokumentation gefunden wo wirklich auf das eingegangen wurde was ich suche.
hier mein Anfang
#include <iostream> #include <boost/random/normal_distribution.hpp> #include <boost/random/mersenne_twister.hpp> boost::normal_distribution<float> wurstbrotverteilung(0, 1); //meine normalverteilung boost::mt11213b mt; // mersenne twister als zufallszahlgenerator [...] //verteilung funktioniert nicht ohne dass ich ihn mit einem Zufallszahlengenerator füttere std::cout << wurstbrotverteilung(mt) << std::endl;Ausgabe:
nanirgendwie nicht was ich wollte, denn es kommt immer nan
-
Du brauchst noch einen generator:
#include <boost/random.hpp> boost::mt11213b mt; boost::normal_distribution<float> wurstbrotverteilung(0, 1); boost::variate_generator<boost::mt11213b&, boost::normal_distribution<float> > get_wurst(mt, wurstbrotverteilung); int main() { std::cout << get_wurst () << std::endl; }
-
danke jetzt funktioniert es

-
Krux schrieb:
danke jetzt funktioniert es

Hallo,
hast du überprüft ob deine Zahlen normalverteilt sind?
Ich meine wenn ich 0 als mean und 1 als std.var eingebe und 100 Zahlen generieren lasse,würde ich ca.30 werte bei 0 erwarten und die anderen links und rechts so dass das ganze eine Gauß-Verteilung bildet!
Bei ist es nicht der Fall.
Vielen Dank
-
hamma2b4u schrieb:
Krux schrieb:
danke jetzt funktioniert es

Hallo,
hast du überprüft ob deine Zahlen normalverteilt sind?
Ich meine wenn ich 0 als mean und 1 als std.var eingebe und 100 Zahlen generieren lasse,würde ich ca.30 werte bei 0 erwarten und die anderen links und rechts so dass das ganze eine Gauß-Verteilung bildet!
Bei ist es nicht der Fall.
Vielen DankWas ist denn bei Dir der Fall? 100 Werte sind eigentlich etwas wenig, um eine ordentliche Bewertung der Verteilung zu machen.
-
Doch Doch, es funktioniert,ich mußte nur meine Ergenisse richtig plotten:-)
Vielen Dank:-)