2011-10-26 8 views
6

boost::random::discrete_distributionstd::vector<double>に初期化します。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の要素が1つしかない場合のように動作します。

ベクターでboost::random::discrete_distribution<>を初期化する正しい方法は何ですか?

答えて

10

クラスにはtakes an iterator rangeのコンストラクタがあるようです。これは次のようなベクトルで使用されます:

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

これを解決する方法はありますか? [link](https://stackoverflow.com/questions/48013802/how-to-set-a-vector-of-discrete-distribution-c)これはほぼ同じですが、分布のベクトルを使っています。 –

関連する問題