0

MS VisualStudio2010を使用しています。

そして今、対数正規分布で3から200の範囲の乱数を生成したいと思います。

「中心極限定理」は一様分布を正規分布に変換できると聞きましたが、私の範囲には198の数値があるため、あまりにも手間がかかるようです。

a = random(MaxRange+1); // mean i have to write this for 198 time???!!!!
x = (a+.......)/198 ; //this will obtain a number which is a normal distribution right???

それなら、私はただ書くことができます

y = log (x);  // and is this mean that y is log normal distribution????

私の質問に答えてくれてありがとう....

4

3 に答える 3

3

まあ random は、あなたが正しく言ったように、均一に分散された乱数を提供します。正規分布で変数を生成するには、実装が簡単なBox-Muller 変換を使用できます。

次に、対数正規変数を生成する必要がありますv。正規分布確率変数v = exp(mu + sig * n)がどこにあるかを計算することによって。n

対数正規分布は ]0,inf[ をサポートしているため、範囲 3 から 200 の意味がよくわかりません。

于 2012-03-19T08:00:18.683 に答える
2

Boost random librarylognormal_distribution内のクラスを見たいと思うかもしれません。特定の分布から数値を生成する方法の例については、こちらを参照してください (特定の乱数ジェネレーターと分布のインスタンスを使用して をインスタンス化する必要があります)。boost::variate_generator

于 2012-03-19T08:06:52.840 に答える