0

モンテカルロ法を使用して pi (pi = gamma(1/2)**2) を推定するコードを Python で記述しようとしています。sqrt(pi) は、関数 gamma(x=1/2) を囲む正方形の面積に、生成されたランダム ポイントの総数を掛けて、関数内で終了し、ポイントの総数で割ったものであるというコードを書く必要があります。生成されます。

私が話しているコードの種類を示すために、ここではガンマ関数を使用せずにそれを行いました (まだモンテカルロ法です)。ここで Pi は、生成されたポイントの総数で除算された、ユニット 1 の円で終了するポイントの数を 2x2 平方倍した面積として評価されます。ポイントが単位円内にあるための基準は、ピタゴラス (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 に答える