/* 乱数の生成 */ #include int irand(int *iseed); float rand(int *iseed); main() { int iseed, nran; int j; float a; iseed=1; for(j = 0; j < 100; j++){ nran=irand(&iseed); a=rand(&iseed); printf("%d, %d, %f\n",j,nran,a); } } /* 0から2147483647の一様乱数を生成 */ int irand(int *iseed) { unsigned int ir; *iseed=*iseed*48828125; if(*iseed < 0) *iseed=(*iseed+2147483647)+1; ir=*iseed; return ir; } /* 0から1の一様乱数を生成 */ float rand(int *iseed) { float r; *iseed=*iseed*48828125; if(*iseed < 0) *iseed=(*iseed+2147483647)+1; r=((float) *iseed)/2147483647; return r; }