/*モンテカルロ法を用いて円周率を求めるプログラム*/
#include
#include
int main()
{
int m;
printf("試行回数(ランダムに打つ点の個数)を入力して下さい。―");
scanf("%d", &m); /*mが各自が入力したランダムに打つ点の個数になります*/
printf("試行回数が%d回のとき、\n",m);
{
int i;
double x,y,pi,n=0.0;
for(i=0;i
<m;i++) /*m回シミュレーションを行います*/
{
x=rand()/(RAND_MAX+1.0);
y=rand()/(RAND_MAX+1.0); /*x,yに0〜1の乱数を代入します*/
if((x*x+y*y)<1.0) /*ランダムに発生させた点が円内にあるか確認します*/
{
n=n+1.0; /*ランダムに発生させた点が円内にあった時の数を数えます*/
}
}
pi=(n/m)*4.0; /*(n/m)は半径1の1/4円の面積のため、円周率はその4倍になります*/
printf("モンテカルロ法により、円周率は%fと計算されます。\n",pi);
return 0;
}
}
[BACK]
[HOME]