用Python蒙特卡罗方法用Gamma函数估计pi

时间:2015-03-21 22:00:14

标签: python montecarlo pi gamma gamma-function

我尝试使用蒙特卡罗方法在python中编写代码来估计pi(其中pi = gamma(1/2)** 2)。我应该编写一个代码,说sqrt(pi)是一个正方形的区域,包含函数gamma(x = 1/2)乘以函数内部生成的随机点总数除以总点数产生。

只是为了显示我正在谈论的代码类型,这里我没有使用Gamma函数(仍然是蒙特卡罗方法)。这里,Pi被评估为2×2平方倍的面积,其以在单元1的圆中结束的点数除以生成的点的总数。点在单位圆中的标准是毕达哥拉斯(np.sqrt(x x + y y)< = 1)。

inside =0
n=100000
for i in range(0,n):
    x=np.random.rand()
    y=np.random.rand()
    if np.sqrt(x*x+y*y)<=1:
        inside = inside+1
pi = 4.0*inside/n
print pi

我不确定如何确定围绕Gamma(1/2)的区域以及该函数内部结束点的标准是什么。

有人有想法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

从你的问题来看,我觉得你正在服用PHY324。 ;) 我对同样的事感到困惑。我有一个代码设置,我不是python专家,但也许这可能有帮助。

import random
from math import *

number_of_points = 10000
points_in = []
points_outside = []

for i in range(number_of_points):
    rand_number1 = random.random()
    rand_number2 = random.random()
    if rand_number2 < (exp(-1*rand_number1))*(rand_number1**(-0.5)):
        points_in.append(1)
    else:
        points_outside.append(1)