【发布时间】:2012-04-14 15:34:30
【问题描述】:
我是 C++ 新手,对缺乏可访问的通用概率操作工具(即 Boost 和标准库中缺乏东西)感到非常惊讶。我用其他语言完成了很多科学编程,但标准和/或无处不在的第三方插件总是包含全套概率工具。一位朋友称 Boost 是 C++ 的等效无处不在的插件,但当我阅读 Boost 文档时,它似乎缺乏我认为非常基本的内置插件。
我找不到采用某种离散概率数组并生成根据这些概率选择的索引的内置函数。我当然可以为此编写自己的函数,但我只是想检查我是否缺少执行此操作的标准方法。
我觉得必须在如此低的级别编写自己的函数是一件坏事,但我正在为一个全部使用 C++ 的大型项目编写一个新的模拟模块。我通常的首选策略是用 Python 编写它并将 Python 链接到 C++,但是因为一旦我完成它,其他几个人将不得不管理这段代码,而且他们都不知道 Python,我认为它会更谨慎地使用 C++ 将其交付给他们。
更一般地说,人们在 C++ 中对诸如从标准分布进行抽样之类的事情做了什么,特别是像多元正态分布这样基本的事情?
【问题讨论】:
-
也总是有gnu.org/software/gsl/manual/html_node/…。而且从直方图中采样真的很简单,如果你不想要更大的包,就自己写这 10 行。
-
@honk 我很欣赏这个链接。但是,我遇到了太多试图编写自己的基本统计函数的科学项目。我认为这会让事情变得更糟。是的,绘制制服并将其与概率的累积总和进行比较很容易,但我认为大多数项目从那里开始是个坏主意,就像我很少相信选择实施自己的 Cholesky 分解的人的科学代码一样而不是使用 LAPACK 或他们自己的线性求解器。
标签: c++ boost probability sampling