/* モンテカルロ法による円の面積の計算 */ #include #include #include main() { unsigned int seed; int ntrial; int i, j, nin; double a1; double r0, r02, r2, x, y, s; printf("Input: Number of trials:\n"); scanf("%u", &ntrial); printf("Input: seed\n"); scanf("%u", &seed); /* printf("seed=%u\n",seed); */ srand(seed); r0=1.0; /* 円の半径*/ r02=r0*r0; nin=0; for(i=0; i < ntrial; i++){ j=rand(); a1=j/(RAND_MAX+1.0); x=a1; j=rand(); a1=j/(RAND_MAX+1.0); y=a1; r2=x*x+y*y; /* 原点からの距離の2乗 */ if(r2 < r02) nin=nin+1; /* 円の中 */ } s=4.0 * ((double)nin/(double)ntrial); printf("ntrial=%u, s=%f\n", ntrial, s); return; }