質問

私はあなたが合格するために任意のコードスニペットを持っている場合、C ++標準ライブラリであり任意のをガウス分布の番号ジェネレータがある場合、または知っていると思います。

事前に感謝します。

役に立ちましたか?

解決

標準ライブラリにはありません。 Boost.Randomはしかし、ありません。私があなただったら、私はそれを使用すると思います。

他のヒント

C ++テクニカルレポート1は、乱数生成のためのサポートを追加します。あなたは比較的最近のコンパイラ(のVisual C ++ 2008 GCC 4.3)を使用しているのであれば、チャンスはそれがそのまま使用可能であるということです。

ここstd::tr1::normal_distribution(および多く)の使用例を参照してください。

GNU科学ライブラリは、この機能を持っています。 GSL - ガウス分布する

ランダムヘッダを有するC ++ 11と、この質問の変化に

答え のstd :: normal_distribution に含まれています。ウォルター・ブラウンの紙 N3551、乱数生成におけるC ++ 11 おそらくこのライブラリへのより良い紹介の一つです。

次のコードは、このヘッダーを使用する方法を示します(それはを生きる参照) :

#include <iostream>
#include <iomanip>
#include <map>
#include <random>

int main()
{
    std::random_device rd;

    std::mt19937 e2(rd());

    std::normal_distribution<> dist(2, 2);

    std::map<int, int> hist;
    for (int n = 0; n < 10000; ++n) {
        ++hist[std::floor(dist(e2))];
    }

    for (auto p : hist) {
        std::cout << std::fixed << std::setprecision(1) << std::setw(2)
                  << p.first << ' ' << std::string(p.second/200, '*') << '\n';
    }
}

私は C ++のランダムな浮動小数点数の世代に私の答えでC ++ 11で乱数生成の例のより一般的なセットを提供しますブーストの例では、同様にrand()を使用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top