-
患者が「治癒したか」をシミュレート
import random
def num_cured(p, q, r, s): # r 人中 s 人が治癒するとき、p 人中何人治癒したか
cured = 0 # 治った人数
for i in range(0, p):
if random.randrange(0, r) < s: # 治った
cured = cured + 1
return cured
-
仮想的実行によるp値の見積り
def pvalue_simulated(p, q, r, s, n): # n 回仮想的に実行して p 値を見積もる
count = 0
for i in range(0, n):
m = num_cured(p, q, r, s) # 1 回仮想的に実行して治った人数
if m >= q:
count = count + 1 # q 人以上治った回数を数える
return count / n
-
モンテカルロ法による円の面積計算
import random
def calc_pi(n):
s = 0
for i in range(0, n):
x = random.random()
y = random.random()
# 点 (x,y) をランダムに選ぶ
if x ** 2 + y ** 2 <= 1: #原点からの距離 1 以下
s = s + 1
return s / n * 4
-
モンテカルロ法による複雑な面積計算
import random
def calc_pi_k(n, k):
s = 0
for i in range(0, n):
x = random.random()
y = random.random()
# 点 (x,y) をランダムに選ぶ
if (x ** 2 + y ** 2 <= 1and y >= k):
s = s + 1
return s / n