Как инициализировать boost::random::discrete_distribution с помощью std::vector?
Я хотел бы инициализировать 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 ответ
Решение
Класс, кажется, имеет конструктор, который принимает диапазон итератора. Это будет использоваться с таким вектором:
std::vector<double> probs = ...;
boost::random::discrete_distribution<> dist(probs.begin(), probs.end());