2011-10-26 74 views
6

我想用std::vector<double>初始化boost::random::discrete_distribution如何使用std :: vector初始化boost :: random :: discrete_distribution?

我的问题是,如果我有一个数组初始化它,就像在正式例如:

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<>的正确方法是什么?

回答

10

该类似乎有一个构造函数takes an iterator range。这将使用一个这样的载体:

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

你知道如何解决这个问题吗? [链接](https://stackoverflow.com/questions/48013802/how-to-set-a-vector-of-discrete-distribution-c)它几乎是相同的,但与分布向量。 –

相关问题