LoginSignup
2
4

More than 3 years have passed since last update.

モンテカルロ法をPythonでシミュレーションしてみた。

Last updated at Posted at 2019-08-05

モンテカルロ法はカジノのルーレットで用いられる賭け方の一つです。
ある一定の規則に従って賭け金を増やしていくという手法です

以下、コードになります。

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

monte_test.png

試行2
出力
資金増加率:1.0507

monte_test2.png

試行3
出力
資金増加率:1.0775

Figure_1.png

資金が100,000円の場合.

試行1
出力
資金増加率:-0.011

Figure_1-1.png

試行2
出力
資金増加率:1.984

Figure_1-2.png

試行3
出力
資金増加率:12.969

Figure_1-3.png

考察

途中,資金が急激に減る場面もありましたがおおむね上昇しています.負けが込んでくるごとに資金を増やしていくモンテカルロ法の特徴がよく出ていると思います.しかし,初期資金を減らして試行すると不安定になりマイナス,つまり破産になることもあります.資金増加率は低いですが,やはり資金が多いほど有利になると考えられます.

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4