随机函数计算圆周率的值

来源:百度知道 编辑:UC知道 时间:2024/06/23 21:43:35
# include <stdio.h>
# include <stdlib.h>
# include <time.h>
main()
{
int count=0,i,j;

for(int c = 1; c <= 100; c++)
{
srand(c);
i=(float)rand()/32767.0;
j=(float)rand()/32767.0;
if (i*i + j*j <= 1)
{
count++;
}
}
printf("%d pi = %f",count,count/100.0*4);
}

怎么不对呢?谢谢!

//可以改成以下形式,count的值越大,算出的圆周率越精确,OK?
//另,这个算法是面积比,你除的32767.0是什么意义呢?除以rand()的最大值即可
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int count = 100;
int inner = 0;
double x = 0.0;
double y = 0.0;

srand(time(0));
for (int i=0; i<count; i++)
{
x = (double)rand()/RAND_MAX;
y = (double)rand()/RAND_MAX;
if (x*x + y*y <= 1)
{
inner++;
}
}
printf("%d pi = %f", inner, (double)inner/count*4);
}