(Danke gelöst)Sampling in C++
-
Hallo,
Ich suche sowas wie eine Library, um von Standart-Verteilungen zu Samplen. Obwohl man mit einer Google-Recherche natürlich viel findet, wollte ich fragen, ob hier jemand Erfahrung damit hat und vielleicht eine besonders einfache Adresse dafür kennt. Ich habe gelesen, dass Boost wohl über so eine Funktion verfügt, aber ich hatte keine Dirichlet-Verteilung gefunden und genau diese ist es die ich brauche. Es scheint aber dass es nicht so einfach ist wie z.B. in R über dnorm etc.
vielen Dank für Hilfe und Hinweise.
-
Die Standardbibliothek bietet dir nur die bekanntesten Verteilungen:
http://en.cppreference.com/w/cpp/numeric/randomWenn du keine externen Bibliotheken für die Dirichlet-Verteilung gefunden hast (Boost war schon eine gute Anlaufstelle. Hast du mal die großen Numerikbibliotheken wie z.B. GSL versucht?), dann wirst du die Zahlen wohl selber transformieren müssen. Wikipedia to the rescue!
http://en.wikipedia.org/wiki/Dirichlet_distribution#Random_number_generation
Mit gammaverteilten Zufallszahlen als Anfang ist es also ganz einfach. Wunderbar, Gammaverteilung kennt sogar die Standardbibliothek! Von da an sind es bloß noch 3-6 Zeilen Code.
-
Vielen Dank für die Antwort. Ich habe jetzt für kleinere Test das Sampling nach R ausgelagert. Wenn alles einigermaßen rundläuft werde ich mich dort reinlesen und veruschen alles in C++ zu machen. Ich muss erstmal schauen, dass ich dieses Gipps-Sampling richtig implementiere habe.