从C ++中的离散概率分布中采样

ely*_*ely 4 c++ boost probability sampling

我是C ++的新手,对缺少可访问的通用概率操作工具(即Boost和标准库中缺少内容)感到非常惊讶。我已经用其他语言完成了许多科学编程工作,但是标准和/或无所不在的第三方插件始终包含各种概率工具。一位朋友宣称Boost是C ++的无处不在的附加组件,但是当我阅读Boost文档时,即使它似乎缺少我认为极其基础的内置组件。

我找不到一个内置的,采用某种离散概率数组并生成根据这些概率选择的索引的内建函数。我当然可以为此编写自己的函数,但是我只是想检查是否缺少执行此操作的标准方法。

我觉得必须以这样低的级别编写自己的函数是一件坏事,但是我正在为大型项目编写一个新的仿真模块,而该项目全部使用C ++。我通常的战术是用Python编写并将Python链接到C ++,但是因为一旦完成我的代码,其他几个人将不得不管理该代码,而且他们都不知道Python,我认为它将谨慎使用C ++交付给他们。

更一般而言,人们在C ++中如何处理诸如从标准分布中进行采样之类的事情,尤其是像多元正态分布这样基本的东西?

lef*_*out 5

也许我误会了您的意图,但是在我看来,您想要的只是std::discrete_distribution