/*モンテカルロ法を用いて円周率を求めるプログラム*/

#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]