蒙特卡罗方法计算π

Monte Carlo Method calculating pi

本文关键字:计算 方法 蒙特卡罗      更新时间:2023-10-16

我正在尝试使用蒙特卡罗方法计算圆周率。但我总是零分,我不知道为什么。这是我的代码

   #include <tchar.h>
   #include <Windows.h>
   #include <omp.h>
   #include <iostream>
   #include<math.h>
   using namespace std;
   int main(int argc, char *argv[]){
       int N = 1000, n = 0;
       double x = 0, y = 0;
       double answer; 
       for (int i = 0; i < N; i++){
         x = (double)rand() / (double)RAND_MAX;
         y = (double)rand() / (double)RAND_MAX;
         if (((x*x) + (y*y)) < 1)
                ++n;
       }
       //cout << "n = " <<n << endl; 
       answer = n / N; 
       cout << answer*4.0 << endl;
       //system("pause");
  }

answer计算中的整数除法:

answer = n / N;

"努夫说。

编辑1:
今天是星期五,所以我要补充一些解释。

变量nN被声明为整数。

除法优先于任何转换或赋值。将除法作为两个整数执行,然后截断分数部分。剩余值被转换为double,然后被分配给变量answer

请不要区分大小写标识符。nN应该是不同的字母。这有助于作者和评论家避免打字错误。