0

我正在尝试使用 Monte Carlo 方法在 python 中编写代码来估计 pi(其中 pi = gamma(1/2)**2)。我应该写一个代码说 sqrt(pi) 是包围函数 gamma(x=1/2) 的正方形面积乘以最终在函数内部生成的随机点的总数除以点的总数生成。

只是为了说明我在说什么类型的代码,这里我没有使用 Gamma 函数(仍然是蒙特卡洛方法)。这里 Pi 被评估为 2x2 正方形的面积乘以单元 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) 的区域以及点在函数内部结束的标准是什么。

有人有想法吗?

谢谢!

4

1 回答 1

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)
于 2015-03-22T00:31:13.790 回答