蒙特卡洛算法
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: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> jackz007 发表于 2020-12-28 10:33
楼主的代码稍作改动,使用的也是 gcc(和楼主的编译器相同),无论怎么运行也不会是 4. 多啊
...
现在好了,可能是我之前忘记保存了,刚开始用VScode
页:
[1]