使用C++TR1从二项式分布生成数

Generating number from binomial distribution using C++ TR1

本文关键字:分布 二项式 C++TR1 使用      更新时间:2023-10-16

我正试图使用以下代码(取自互联网)从二项式分布中生成数字。它只编译一个挂起的执行。(我在mac上使用g++。)

有人能提出一个使用C++TR1库功能从二项式分布生成数字的工作代码吗?

#include <tr1/random>
#include <iostream>
#include <cstdlib>
using namespace std;
using namespace std::tr1;
int main()
{
  std::tr1::mt19937 eng; 
  eng.seed(time(NULL));
  std::tr1::binomial_distribution<int, double> roll(5, 1.0/6.0);
  std::cout << roll(eng) << std::endl;
  return 0;
}

以下是工作代码:

#include <iostream>
#include <random>
int main() {
  std::random_device rd;
  std::mt19937 gen(rd());
  std::binomial_distribution<> d(5, 1.0/6.0);
  std::cout << d(gen) << std::endl;
}

你可以在这里查看它的结果,它适用于最近的GCC和Clang版本。请注意,通常最好使用random_device,而不是时间来获取种子。

--std=c++11编译。