C言語による乱数生成http://www.sat.t.u-tokyo.ac.jp/~omi/random_variables_generation.html
研究で正規分布に従う乱数を得る必要があってネットを見てたら発見
C言語での一様乱数の作り方が普段やってる方法(Cの本に載ってた)とちょい違うなー
普段(本)
int r = rand()/(RAND_MAX+1.0);
上記サイト
int r = ((double)rand()+1.0)/((double)RAND_MAX+2.0);
どっちがいいとかあるのかなー?
で、調べていた正規分布の乱数発生器は以下
double rand_normal( double mu, double sigma ){
double z=sqrt( -2.0*log(Uniform()) ) * sin( 2.0*M_PI*Uniform() );
return mu + sigma*z;
}
引数のmuが中心値でsigmaが分散値ですね
いやー正直自力でこの乱数発生方法は思いつかんわー
調べて良かった!Box-Muller法というらしい
0 件のコメント:
コメントを投稿