モンテカルロ法を用いて円の面積をだし円周率の近似を求める。
#include <stdio.h>
#include <stdlib.h>
int main()
{
double i,imax,n;
double x,y,pi;
n=0.0;
imax=10000000.0; // 乱数の発生回数
for(i=0;i<=imax;i++) {
/*0以上1未満の乱数を生成*/
x=rand()/(RAND_MAX+1.0);
y=rand()/(RAND_MAX+1.0);
/*0<=x,y<=1の範囲にある中心原点半径1の
扇形の中に乱数による点が入ったらカウントする*/
if((x*x+y*y)<1.0) {
n+=1.0;
}
}
pi=n/imax*4.0; //半径1の円の面積すなわち円周率
printf("%f\n",pi);
return 0;
}