计算Pi值,用C语言,程序

计算Pi值,用C语言,程序,第1张

楼主这个方法应当用随机数来做。

思想:

在0到1之间取两个随机数,如果这两个随机数(x,y)在四分之一圆内,就加一。

最后用落在圆内的点数,除以总点数,就是PI了。

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <time.h>

#define N 300000

main()

{

long i,n=0

float x,y,pi

srand(time(NULL))

for (i=0i<Ni++)

{

x=1.0*rand()/RAND_MAX

y=1.0*rand()/RAND_MAX

if (x*x+y*y<1)

n++

}

pi=4.0*n/N

printf("pi=%f\n",pi)

getch()

}

//C语言实现如下:

double binary_PI(int n)

{

double result = 1.0

int i = 0

for (i=1 i<=n i++)

result *= (1.0+1.0/((2*i-1)*(2*i+1)))

return result

}

int main()

{

int n = 200

printf("PI/2 = %lf\n", binary_PI(n))

return 0

}

运行结果:

希望对您有所帮助!!

数值概率算法具有随机性 建议不用

#include <string.h>

#include <stdio.h>

#include <stdlib.h>

double getPI(int n)

void main()

{

  double PI

  int n

  printf("Please enter the number of random points for test\n")

  scanf("%d",&n)

  PI=getPI(n)

  printf("The similar value of PI is\n%f\n",PI)

  getchar()

}

double getPI(int n)

{

   int inCircle=0

   float x,y

   int count=n

   while(count)

  {

      x=random(101)

      y=random(101)

      if(x*x+y*y<=10000)

          inCircle++

      count--

   }

   return 4.0*inCircle/n

}

赠送割圆术解法

#include <string.h>

#include <stdio.h>

#include <math.h>

double getPI(int n)

void main()

{

  int n

  double PI

  printf("Please enter accuracy\n")

  scanf("%d",&n)

  PI=getPI(n)

  printf("The similar value of PI is\n%f\n",PI)

  getchar()

}

double getPI(int n)

{

  int div,i=4

  double b=sqrt(2)/2.0

  double c=0.0

  for(div=0div<ndiv++)

  {

      b=sqrt(2.0-2.0*sqrt(1.0-b*b))*0.5

      i=i*2

  }

  c=b*i

  return c

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10069440.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存