gpt4 book ai didi

使用蒙特卡洛方法计算 PI 给出的答案不精确

转载 作者:太空狗 更新时间:2023-10-29 15:50:47 25 4
gpt4 key购买 nike

我正在尝试使用蒙特卡洛方法计算 PI。无论 MAXLEN 有多大,我的代码都会给出结果 3.000。调试了很多次之后,我无法理解我做错了什么。

#include <stdio.h>
#include <stdlib.h>

#define sqr2(x) ((x)*(x))
#define frand() ((double) rand() / (RAND_MAX))
#define MAXLEN 1000


int circumscribed(int radius){
float xcoord = frand();
float ycoord = frand();
float coord = sqr2(xcoord) + sqr2(ycoord);

if(coord <= radius)
return 1;
return -1;
}

int main()
{
int i;
int circles = 0, rect = 0;;
for(i = 0; i < MAXLEN; i++)
{
if(circumscribed(1) > 0) // if(circumscribed(1)) shoul be enough but it doesn't work. Very odd in my opinion.
circles++;
rect++; //this is equal to MAXLEN, I just used it for debugging
}

float PI = 4 * circles / rect;
printf("PI is %2.4f: \n", PI);
return 0;
}

最佳答案

由于 circlesrect 都是 int4 * circles/rect 的结果将是一个整数。请改用 float 。

float PI = 4.0 * (float)circles / rect;

关于使用蒙特卡洛方法计算 PI 给出的答案不精确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17659652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com