またアホなこと言うてるブログ
Amebaでブログを始めよう!

正規分布を作る

とある金融機関の入社試験で、正規分布になるように乱数をふるプログラムを作れというものが出たらしい。

その話を聞いてパッと思いついたものを書いてみた。

#include
#include

int main(void){
int height,h; //高さ
int x; //x軸上の位置
int r; //乱数
int N=10000; //降らす点の個数
int ground[1000]={0}; //地面
int i;
FILE *fp;

printf("点を降らせる高さを入力:\n");
scanf("%d",&h);

for(i=0;i x=500;
height=h;
while(height>0){
r=rand()%3;
if(r==0){
height--;
}
if(r==1){
x++;
}
if(r==2){
x--;
}
}
if(x<0 || x>1000){
puts("点が定義域の外に出た");
break;
}
ground[x]++;
}
fp=fopen("normaldistribution.dat","w");
for(i=0;i<1000;i++){
fprintf(fp,"%d %d\n",i,ground[i]);
}
fclose(fp);

return 0;
}



見た目にはいい感じ。

要は、ある高さから点をたくさん降らせて、それが地面に積もる時の積もり方を正規分布とみてる。