我试图使用以下代码(取自互联网)从二项分布生成数字.它编译,但它挂起一个执行.(我在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;
}
Run Code Online (Sandbox Code Playgroud)
小智 1
这是工作代码:
#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;
}
Run Code Online (Sandbox Code Playgroud)
您可以在此处查看其结果,它适用于最新的 GCC 和 Clang 版本。请注意,通常使用 random_device 而不是时间来获取种子更好。
用--std=c++11.
| 归档时间: |
|
| 查看次数: |
1700 次 |
| 最近记录: |