首页 > 解决方案 > 从 Boost 二项分布中抽取随机数

问题描述

这是一个从二项分布中提取随机数的示例std::binomial_distribution

#include <random>
int main ()
{
   std::mt19937 eng(14);
   std::binomial_distribution<size_t> dist(28,0.2);
   size_t randomNumber = dist(eng);

   return 0;
}

我找不到类似的提升示例。我浏览了这个文档,它解释了如何从一个boost::math::binomial对象计算 PDF、CDF 和其他内容,但他们不是在谈论对随机数进行采样。

boost::math::binomial我应该根据将为我计算的 CDF 自己编写二进制搜索 还是可以直接提升返回随机数?

标签: c++randomboostbinomial-cdf

解决方案


感谢@Bob__的这个链接,这是一个简单的工作示例

#include <random>
#include <boost/random.hpp>

int main ()
{
   std::mt19937 eng;
   boost::random::binomial_distribution<int> dist(28,0.2);
   int randomNumber = dist(eng);

   return 0;
}

出于某种原因,它不能用 编译size_t,所以我使用int了(有关更多信息,请参阅下面的@Bob__ 评论)。


推荐阅读