Как инициализировать boost :: random :: discrete_distribution с помощью std :: vector? - PullRequest
6 голосов
/ 26 октября 2011

Я хотел бы инициализировать boost::random::discrete_distribution с std::vector<double>.

Моя проблема в том, что если я инициализирую его массивом, как в официальном примере:

double probabilities[] = {
    0.5, 0.1, 0.1, 0.1, 0.1, 0.1
};
boost::random::discrete_distribution<> dist(probabilities);

тогда это работает отлично.

Однако, если я инициализирую его с std::vector, то он ведет себя так, как если бы он имел только один элемент с вероятностью 1,0.

Можете ли вы сказать мне, как правильно инициализировать boost::random::discrete_distribution<> вектором?

1 Ответ

10 голосов
/ 26 октября 2011

Класс, похоже, имеет конструктор, который принимает диапазон итератора .Это будет использоваться с таким вектором:

std::vector<double> probs = ...;
boost::random::discrete_distribution<> dist(probs.begin(), probs.end());
...