rand関数を使わずにBox-Muller法を使う
#define PI 3.141592653589793

int bm_rand(void) { /* Box-Muller random */
return (int)fabs((sqrt(-2.0*log((double)rand()/RAND_MAX))*cos(2.0*PI*((double)rand()/RAND_MAX)))
*RAND_MAX-1);
}


例えばこんな感じでエセBox-Muller法な乱数生成をすると、ふつーのCのrand関数よりもキレイな感じになってとってもお買い得。



0〜99の乱数を10億回、それぞれ生成した昇順な分布表。
Box-Muller法のほうがかっちょいいでしょ。
Comment投稿

豚小屋

糞豚大先生