Я пытаюсь использовать следующий код (взятый из Интернета) для генерации чисел из биномиального распределения. Он компилирует, но одно исполнение зависает. (Я использую G ++ на Mac.)
Может ли кто-нибудь предложить рабочий код для генерации чисел из биномиального распределения с использованием функций библиотеки 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
,
Других решений пока нет …