ランダムに値を返すクラスを作りたいのですが、一様分布は最大値,最小値を指定で
き、正規分布は平均値,分散を指定できるようにするにはどうしたらいいでしょうか?
一様乱数はこんな感じだと思うのですが,指定できるようにするにはどうするかわかり
ません。
#include <stdio.h>
#include <stdlib.h>
main()
{
int i, r;
int rmax;
rmax=RAND_MAX; /* 2^(15)-1*/
printf(RAND_MAX=%ld\n, rmax);
/*乱数発生系列の初期化*/
srand(time(NULL)%RAND_MAX);
for (i=0; i<20; ++i) {
r=rand();/*乱数の取り出し*/
printf(“%d\t%f\n”,r,(float)r/RAND_MAX);
}
}
知識不足で申し訳ないですがよろしくお願いします。
乱数の質とか考えると、こういうのを自作するのは勧めない
自作することが目的なら別だが
とりあえず boost にある random 系にそういう必要そうなもの一式皆あるよ
http://www.kmonos.net/alang/boost/classes/random.html
http://boost.cppll.jp/HEAD/libs/random/index.html
ご参考:
VC++9ならヘッダ<random>にモロモロ詰まってます。
確率分布なら
- uniform_int
- uniform_real
- bernoulli_distribution
- geometric_distribution
- poisson_distribution
- binomial_distribution
- exponential_distribution
- normal_distribution
- gamma_distribution