您的位置:首页 > 其它

一种计算π的方法

2013-06-20 11:11 225 查看
假设点可以均匀的扔到正方形中。如果一共扔N次,其中M次扔进内切圆内,则可以推导出计算π的公式:





[b]随机计算π[/b]

大体思路:获得随机数(x,y),判断x*x + y*y是否在单位圆内,可以得到M的个数。

程序

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 1000
int main()
{
int i, M=0;
double x, y, pi;
srand((int)time(NULL));
for (i=0; i<N; i++)
{
x = rand() / (double)RAND_MAX;
y = rand() / (double)RAND_MAX;
if (x*x + y*y < 1)
M++;
}
pi = (4.0 * M) / N;
printf("pi:%f\n", pi);
return 0;
}


注意:有关随机数的获取可以参考:/article/4722595.html

一组结果


[b]画出网格计算π[/b]

大体思路:





程序:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define n 10000000
int main()
{
int i;
double sum = 0;
for (i=0; i<n; i++)
sum += sqrt((double)n*n - (double)i*i);
printf("%f\n", 4.0*sum /n/n);
}


一组结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: