求π的近似值(2)

来源:互联网 发布:一点一点吃干抹净淘宝 编辑:程序博客网 时间:2024/05/05 02:08
利用随机数法求π的近似值


*问题分析与算法设计
随机数法求π的近似值的思路:在一个单位边长的正方形中,以边长为半径,以一个顶点为圆心,在政权方形上作四分之一圆。随机的向正方形内扔点,若落入四分之一圆内则计数。重复向正方形内扔足够多的点,将落入四分之一圆内的计数除以总的点数,其值就是π值四分之一的近似值。
按此方法可直接进行编程,注意:本方法求出的π值只有统计次数足够多时才可能准确。
#include <stdio.h>#include <math.h>int main(){    double e = 0.1,b = 0.5, c, d;    long int i;     for (i = 6; ; i *= 2)     {        d = 1.0 - sqrt(1.0 - b*b);         b = 0.5*sqrt(b*b + d*d);        if (2*i*b - i*e < 1e-15)         {            break;        }         e = b;     }    printf("pai = %.15lf\n", 2*i*b);     printf("The number of edges of required polygon:%ld\n",i);    return 0;}

3.122267
3.139733
3.133733