前提・実現したいこと
カジノのルーレット等で用いるモンテカルロ法と呼ばれる必勝法があります。
お手数おかけしますが、モンテカルロ法に関しては下記のURLを見ていただけると助かります。
(https://www.xn--lck0a5auxk.jp/monte-carlo.html)
今回実現したいのが、引数として「賭けに勝った(0など)」、「賭けに負けた(1など)」を受け取ると、
次回ゲーム時に必要になるベット額を算出し、返り値としてそのベット額を返す関数です。
引数に関しては現在が何ゲーム目であるかを表す数値も必要かと自分は考えてみました。言語はPythonでお願い致します。モンテカルロ法に関して理解していただく必要がある為、かなり手間をとらせてしまうかもしれませんが、回答よろしくお願い致します。
発生している問題・エラーメッセージ
下のソースコードのように、一度簡単な処理(1ゲームのみを考えた処理)を想定し、それをfor文で回せないか考えましたが、そもそも基盤となる簡単なプログラムも組めていません。
該当のソースコード
Python
1import sys 2 3table = [1, 2, 3] 4 5# 0 = lose, 1 = win 6 7def monte_carlo(result, n): 8 if result == 0: 9 table.append(n) 10 bet = table[0] + n 11 12 elif result == 1: 13 # リスト、もしくは文字列の両端の値を一度に消す関数があれば知りたいです 14 table.pop(0) 15 table.pop(-1) 16 """ 17 モンテカルロ法はリストの要素が一つ、もしくはゼロになった際 18 初めて終了し、また最初に戻るというベット方法です。 19 リストに要素が2以上あればモンテカルロ法は続行するのですがデータ型が違うので 20 '>'記号が使えません。どうにか他の条件で表す方法があれば教えてください。 21 """ 22 if table > 1: 23 bet = table[0] + n 24 else: 25 sys.exit 26 else: 27 sys.exit 28 29 return bet 30 31
試したこと
最近アルゴリズムに関する勉強をし始め似たような処理を繰り返す時は、一度に全てを作ろうとせずに、まず簡単な処理を作りそれをfor文で回すと良いと書籍に書いてありましたので、簡単なプログラムから作ろうとしました。
補足情報(FW/ツールのバージョンなど)
Pythonは3系です。
最終的にはAPIに組み込みたいと考えています。
回答1件
あなたの回答
tips
プレビュー