ファイル入出力について
Posted: 2012年5月07日(月) 08:32
試行回数10万回でxorshift法を用いて(0,1)の一様乱数の度数分布を作成する問題なのですが、
ファイルを出力する際に10個の値がすべて0になってしまいます。
使用環境はxcode3.2.6でmac osの10.6.8です。
学校の環境では同じコードで上手く出力されていたはずなのですが…
よろしければご教授ください
ファイルを出力する際に10個の値がすべて0になってしまいます。
使用環境はxcode3.2.6でmac osの10.6.8です。
学校の環境では同じコードで上手く出力されていたはずなのですが…
よろしければご教授ください
#include<stdio.h>
unsigned long xorshift(){
static unsigned long x=123456789, y=362436069, z=521288629, w=88675123;
unsigned long t;
t = (x^(x<<11)); x=y;y=z;z=w;
return (w=(w^(w>>19))^(t^(t>>8)));
}
int main(){
int x,a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;
double y;
FILE *file;
file = fopen("test.txt","w");
for(x=0;x<=99999;x++){
y=xorshift()/4294967295.0;
if(y>=0.0 && y<=0.10){
a++;
}
else if(y>=0.10 && y<=0.20){
b++;
}
else if(y>=0.20 && y<=0.30){
c++;
}
else if(y>=0.30 && y<=0.40){
d++;
}
else if(y>=0.40 && y<=0.50){
e++;
}
else if(y>=0.50 && y<=0.60){
f++;
}
else if(y>=0.60 && y<=0.70){
g++;
}
else if(y>=0.70 && y<=0.80){
h++;
}
else if(y>=0.80 && y<=0.90){
i++;
}
else if(y>=0.90 && y<=1.0){
j++;
}
}
fprintf(file,"%d\n",a);
fprintf(file,"%d\n",b);
fprintf(file,"%d\n",c);
fprintf(file,"%d\n",d);
fprintf(file,"%d\n",e);
fprintf(file,"%d\n",f);
fprintf(file,"%d\n",g);
fprintf(file,"%d\n",h);
fprintf(file,"%d\n",i);
fprintf(file,"%d\n",j);
fclose(file);
return 0;
}