对圆周率的精确程度往往是衡量超级计算机的计算能力的标准,蒙特卡罗方法的原理是利用概率统计的方法计算圆周率,废话不多说,下面便是代码分析。
#include<stdio.h>
#include<stdlib.h>
#define N 10000000 //N越大(也就是样本越多),对圆周率的精确程度越高
float pi(int n)
{
float x, y, inno = 0;
long i;
for (i = 1; i <= n; i++)
{
x = (float)(rand()) / RAND_MAX;
y = (float)(rand()) / RAND_MAX;
if (x*x + y*y<1.0)
inno++;
}
return 4 * inno / n; //计算产生的点落在单位圆里的概率从而求出圆周率
}
main()
{
float PI = pi(N);
printf("圆周率是:%8.6f", PI);
getchar();
}
运行结果如下:
<img src="https://img-blog.csdn.net/20140616122008265?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjMzOTc0Ng==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />