Подтвердить что ты не робот

Создание числа из биномиального распределения с использованием С++ TR1

Я пытаюсь использовать следующий код (взятый из Интернета) для генерации чисел из биномиального распределения. Он компилирует только одно исполнение, которое он висит. (Я использую g++ на Mac.)

Может ли кто-нибудь предложить рабочий код для генерации чисел из биномиального распределения с использованием функций библиотеки С++ 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;
}
4b9b3361

Ответ 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;
}

Вы можете проверить его результат здесь, и он работает с недавними версиями GCC и Clang. Обратите внимание, что обычно лучше использовать random_device вместо времени, чтобы получить семя.

Скомпилируйте его с помощью --std=c++11.