利用拉马努金公式和蒙特卡洛方法计算圆周率

拉马努金公式

#求阶乘函数
def myreduce(m):
  value = 1
  for i in range(1,m+1):
    value = value*i
  return value

#求和项的函数
def sumfun(m):
  div = (396**(4*m))*((myreduce(m))**4)#公式的分母部分
  return (26390*m + 1103)*myreduce(4*m)/div

COUNT = 1000#求和项的个数
sumvalue = 0#累计的值
#进行求和
for m in range(0, COUNT+1):
  sumvalue += sumfun(m)
temp = 2*(2**0.5)*sumvalue/(99**2)#1/pi

print('%.4f'%(1/temp))

蒙特卡洛方法

from random import random

COUNT = 1000000#总实验次数
WIDTH = 1#正方形的边长
num_in_cir = 0#在1/4圆内的实验次数
for i in range(1, COUNT+1):
  x = random()
  y = random()
  if (x**2 + y**2) <= WIDTH:#判断实验点是否落入圆内
    num_in_cir += 1
pi = 4*(num_in_cir/COUNT)#计算pi
print('%.4f'%(pi))

你可能感兴趣的:(python,python)