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

我试图使用以下代码(从互联网获取)从二项分布生成数字.它编译,但一个执行它挂起来. (我在mac上使用gp.)

有人建议使用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;
}

您可以查看其结果here,它可以与最近的GCC和Clang版本一起使用.请注意,通常最好使用random_device而不是时间来获取种子.

使用–std = c 11编译.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...