一世轻尘 发表于 2020-12-28 09:56:54

蒙特卡洛算法

xdm,为啥我用蒙特卡洛算法计算pi的值在VScode和DEV中的运算结果不同啊???
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
int main()
{
    float x,y,pi;
    long long i,D=0,C=0;
    srand((unsigned)time(NULL));
    for(i=0;i<100000000;i++)
    {
      C++;
      x=(float)rand()/RAND_MAX;
      y=(float)rand()/RAND_MAX;
      if(sqrt(x*x+y*y)<=1)
            D++;
    }
    pi=4.0*(float)D/C;
    printf("pi的值是%f\n",pi);
    return 0;
}

jackz007 发表于 2020-12-28 10:33:50

本帖最后由 jackz007 于 2020-12-28 10:38 编辑

      楼主的代码稍作改动,使用的也是 gcc(和楼主的编译器相同),无论怎么运行也不会是 4. 多啊
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main()
{
      double x , y , pi                     ;
      unsigned long long D , C            ;
      srand((unsigned) time(NULL))          ;
      for(C = D = 0 ; C < 100000000 ; C ++) {
                x = rand() / (double)RAND_MAX ;
                y = rand() / (double)RAND_MAX ;
                if(x * x + y * y <= 1) D ++   ;
      }
      pi = 4.0 * D / C                      ;
      printf("pi 的值是 %lf\n" , pi)      ;
}
      编译、运行实况
D:\0002.Exercise\C>g++ -o pi pi.c

D:\0002.Exercise\C>pi
pi 的值是 3.141310


D:\0002.Exercise\C>pi
pi 的值是 3.141593

D:\0002.Exercise\C>pi
pi 的值是 3.141441

D:\0002.Exercise\C>

一世轻尘 发表于 2020-12-28 10:58:40

jackz007 发表于 2020-12-28 10:33
楼主的代码稍作改动,使用的也是 gcc(和楼主的编译器相同),无论怎么运行也不会是 4. 多啊

...

现在好了,可能是我之前忘记保存了,刚开始用VScode
页: [1]
查看完整版本: 蒙特卡洛算法