简体   繁体   English

如何使用std :: vector初始化boost :: random :: discrete_distribution?

[英]How to initialize boost::random::discrete_distribution using std::vector?

I would like to initialize boost::random::discrete_distribution with an std::vector<double> . 我想用std::vector<double>初始化boost::random::discrete_distribution

My problem is that if I initialize it with an array, like in the official example: 我的问题是,如果我用数组初始化它,就像在官方示例中一样:

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

then it works perfectly. 然后它完美地运作。

However if I initialize it with a std::vector , then it behaves like if it has only one element with probability 1.0. 但是,如果我用std::vector初始化它,那么它的行为就像它只有一个概率为1.0的元素。

Can you tell me what is the right way of initializing a boost::random::discrete_distribution<> with a vector? 你能告诉我用向量初始化boost::random::discrete_distribution<>的正确方法是什么?

The class seems to have a constructor that takes an iterator range . 该类似乎有一个带有迭代器范围的构造函数 This would be used with a vector like this: 这将与这样的矢量一起使用:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM