我尝试使用蒙特卡罗方法在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)的区域以及该函数内部结束点的标准是什么。
有人有想法吗?
谢谢!
答案 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)