2012-03-29 17 views
3

私はブースト::ランダム:: discrete_distributionを初期化したいダブル[]のように:double [];を使用してboost :: random :: discrete_distributionを初期化する方法。

boost::random::discrete_distribution<>* distribution(double* _distr) 
{ 
    return new boost::random::discrete_distribution<>(_distr); 
} 

私は、ベクターまたは静的なサイズのテーブルを使用することができますが、書き換えることなく、それを克服する方法があります知っている私_distr?

+0

私はこれまでに見た中で最大のグラバータールを持っています。私はそのようなことをすることが可能であることを知りませんでした。 –

答えて

1

discrete_distribution<>は、配列の長さを知る方法がないため、普通のdouble*引数を取ることができません。

は、その代わりに、イテレータ範囲がかかりますが、あなたは、配列の要素数を指定する必要があります:いつものように

boost::random::discrete_distribution<>* distribution(double const* distr, 
                std::ptrdiff_t count) 
{ 
    return new boost::random::discrete_distribution<>(distr, distr + count); 
} 

が、これはthe documentationでかなり明らかにされています。

+0

ありがとうございます!それは私が望んでいた答えです! – Emsi

関連する問題