6

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 の要素が 1 つしかない場合のように動作します。

boost::random::discrete_distribution<>ベクトルで aを初期化する正しい方法を教えてください。

4

1 に答える 1

10

クラスには、イテレータ range を取るコンストラクタがあるようです。これは、次のようなベクトルで使用されます。

std::vector<double> probs = ...;
boost::random::discrete_distribution<> dist(probs.begin(), probs.end());
于 2011-10-26T14:34:41.790 に答える