モンテカルロ法はカジノのルーレットで用いられる賭け方の一つです。
ある一定の規則に従って賭け金を増やしていくという手法です
以下、コードになります。
Monte_Carlo_test.py
import random
import numpy as np
import matplotlib.pyplot as plt
A=0
B=0
ML = [1,2,3]
M=1000000 #資金
M_ini=M#初期資金
count=1000#試行回数
x = np.zeros(count)
for i in range(count):
bet_A=ML[0]
bet_B=ML[len(ML)-1]
bet=bet_A+bet_B
if len(ML)==1 or len(ML)==2 :
ML=[1,2,3]
num = random.random()
if num >= 0.5 :
print("win")
A=A+1
elm = ML.pop()#リストの末尾から要素を1つ取り出す
elm = ML.pop(0)#引数にリストのインデックスを取り、その要素を取り出す
M=M+1*100*bet
else :
print("lose")
B=B+1
ML.append(bet)
M=M-1*100*bet
x[i]=M
print("資金増加率:{}".format(M/M_ini))
plt.plot(x, label="money")
plt.legend()
plt.show()
結果
資金が1,000,000円の場合.
試行1
出力
資金増加率:1.0614
試行2
出力
資金増加率:1.0507
試行3
出力
資金増加率:1.0775
資金が100,000円の場合.
試行1
出力
資金増加率:-0.011
試行2
出力
資金増加率:1.984
試行3
出力
資金増加率:12.969
考察
途中,資金が急激に減る場面もありましたがおおむね上昇しています.負けが込んでくるごとに資金を増やしていくモンテカルロ法の特徴がよく出ていると思います.しかし,初期資金を減らして試行すると不安定になりマイナス,つまり破産になることもあります.資金増加率は低いですが,やはり資金が多いほど有利になると考えられます.