Visual Studio 2010 SP1で、ネイティブライブラリ(TR1)を使用して、boost :: randomのドキュメントの最初の例の1つを実装しようとしています。VC2010でboost :: random :: discrete_distributionを初期化する
ライブラリーを使用する前に、VC2010のランダム関数を使用するだけでよいことを知りました。これらは、ブーストのように機能しますが、ここではネイティブ関数を使用できません。
問題はVC2010でdiscrete_distribution<>
を初期化することです。 Boostでは、配列を取る:
double probabilities[] =
{
0.5, 0.1, 0.1, 0.1, 0.1, 0.1
};
boost::random::discrete_distribution<> dist(probabilities);
しかし、私はそれを供給すべきか分からない。
理由::ここで私は、コンパイル時に受信エラーがある 'のconstのstd :: tr1を:: discrete_distribution <> :: param_type' NOコンストラクタが取ることができなかった
に 'ダブル[6]' から変換することはできませんソースの種類、またはコンストラクタのオーバーロードの解決は
曖昧だった私は、これらの機能がVC2010に実装されているようなマルチプラットフォームの互換性を維持しながら、私はちょうどのものに建て使用できると思ったが、私が上にフォールバックする必要があるようですブーストクラスを使用します。
boost :: randomをVC2010の組み込みクラスと比較して、パフォーマンス上の罰則はありますか?
Boostライブラリは、現在ほとんどのC++コンパイラで実装されていますが、一般に推奨されていますか?
Non-working modified example using stdまた
Working original example using boost::random
は、何この行はboost doc pageに意味:
はここで働くと非作業コードの2 pastebinsですか?
ヒントコンパイラがstd :: initializer_listをサポートしている場合は、 はweightを直接使用してdiscrete_distributionを初期化できます。