boost/math/distributions und boost/random/distributions



  • Hi,

    dass beides existiert irritiert mich irgendwie. Verstehe ich das richtig, dass ich bei ersterem das Sammelsurium an freien Funktionen wie mean, variance usw. erhalte und letzeres dafür für Zufallsgeneratoren verwendet werden kann?

    Sagen wir, ich habe eine Verteilung, für die ich es nicht-trivial finde den Erwartungswert oder andere Momente zu berechnen. Jetzt möchte ich aber genau das tun und zusätzlich brauche ich aber hin und wieder Zufallszahlen darauf basierend.

    Da maths und random nicht kompatibel zu sein scheinen, benötige ich für diesen Fall also beide Bibliotheken? Oder wie nutzt ihr das?

    Danke und beste Grüße,
    Eisflamme


  • Mod

    Eisflamme schrieb:

    dass beides existiert irritiert mich irgendwie.

    Es sind zwei völlig verschiedene Konzepte, die hier modelliert werden, auch wenn sie ein paar oberflächliche Gemeinsamkeiten haben.

    Verstehe ich das richtig, dass ich bei ersterem das Sammelsurium an freien Funktionen wie mean, variance usw. erhalte und letzeres dafür für Zufallsgeneratoren verwendet werden kann?

    Ja, so ungefähr. Letztere sind eher Transformationen, die aus Werten, die nach einer bestimmten Verteilung verteilt sind, andere Werte errechnet, die einer anderen Verteilung folgen.

    Sagen wir, ich habe eine Verteilung, für die ich es nicht-trivial finde den Erwartungswert oder andere Momente zu berechnen. Jetzt möchte ich aber genau das tun und zusätzlich brauche ich aber hin und wieder Zufallszahlen darauf basierend.

    Ein bisschen ungewöhnlich. Konstruiertes Beispiel oder ist das wirklich etwas, das du vor hast?

    Da maths und random nicht kompatibel zu sein scheinen, benötige ich für diesen Fall also beide Bibliotheken?

    Ich habe nicht geguckt, aber wenn die inkompatibel sind (was ich erwarten würde, denn eines ist eine Transformationsfunktion, das andere eine Art Sammlung von Funktionen mit gemeinsamen Parametern - eines hat mit dem anderen wenig zu tun), dann wirst du wohl beide benötigen. Ich würde auch nicht versuchen, beide künstlich zu verheiraten, außer ich hätte sehr gute Gründe.

    Oder wie nutzt ihr das?

    #include <random> 😃



  • Nagut, bei näherer Betrachtung benötige ich bei meinem aktuellen Teilproblem doch keine Zufallswerte.

    Aber nehmen wir beispielsweise Mal ein Programm für dynamische Programmierung (dynamisches Programm ist anscheinend kein Begriff), was auf einigen Zufallsvariablen basiert, dann benötige ich manchmal den Erwartungswert einer Verteilung. Andererseits steht in der Gleichung aber auch Mal ein Integral über eine PDF. Und für den Fall kann ich natürlich diskretisieren und das als Summe schreiben oder ich löse es mit einer bestimmten Anzahl von Durchläufen mit Zufallszahlen der Verteilung (ähnlich zu einer Monte Carlo Simulation).

    Gut, das sind unterschiedliche Variablen, daher benötige ich für dieselbe Variable streng genommen nicht beides (wobei ich mir auch Fälle vorstellen kann, wo man beides benötigt). Aber der Kontext solch eines Programms oder auch anderer Simulationen reicht für mich deutlich als Grundlage dafür aus, dass es Sinn ergibt Verteilungen auch die Zufallskomponente mitzugeben.

    Oder andersrum: Wieso definiert random die Verteilungen neu? Ich fände es schöner, wenn man dort als Eingabe von Verteilungen die von math verwenden könnte. Ich finde es schon redundant, dass es zwei Normalverteilungen in anderen Teilen der Bibliothek gibt, auch wenn Du das als Oberflächlichkeit bezeichnest. Denn wenn ich beides verwende, komme ich (oder Benutzer des Codes) bei den Doppeldeutigkeiten doch leicht durcheinander. Und ich sehe die Nachteile darin nicht, dass random bzgl. der Verteilungen auf math basiert (die Kopplung finde ich als Benutzer nicht schlimm; wenn der Verteilungsteil von random auf math basiert, empfinde ich das als natürlich).


Anmelden zum Antworten