It's a wonderful life !

日常のつぶやきや、病気のことを語ります

馬券購入の参考になりそうなプログラムを書いた話

「マイナスにならないようにオッズに合わせて馬券を買えば、お金持ちになれるんじゃ?」

 そんな邪な考えが頭に浮かんだので、単勝の全頭買いで必要な金額を計算するプログラムを書いてみることにしました。最初は携帯に便利なAndroidアプリを作ろうと思いましたが、どんなもんか確認したくって、簡単に作れるExcel VBAで作成。

 ロジック的にはこんな感じ。

 1. 全頭に100円ずつ賭け、総掛金を求める。例えば16頭立てなら1600円になる。

2. 1枠から順番に以下の処理を行う。
 オッズとその枠への掛金を乗算して配当を求め、総掛金と比較する。

 (a) 配当 >= 総掛金以上の場合は次の枠へ。
 (b) 配当 < 総掛金の場合は配当が総掛金を超えるように枠への掛金を調整し、1枠から計算をやり直す。

 プログラムは以下の通り。細かいところは突っ込まないで欲しいです。あくまで動作確認用なので。

Option Explicit

Private Sub Btn_Calc_Click()

    Dim ListTop As Long
    Dim Counter_A As Long

    ' 初期設定
    Range("C2:C17").Value = 100

    ListTop = 2
    Counter_A = ListTop

    Do Until Cells(Counter_A, 1).Value = ""

        If Cells(Counter_A, 4).Value >= Range("C18").Value Then

            Counter_A = Counter_A + 1

        Else

            Do Until Cells(Counter_A, 4).Value >= Range("C18").Value

                Cells(Counter_A, 3).Value = Cells(Counter_A, 3).Value + 100

            Loop

            Counter_A = ListTop

        End If

    Loop

    MsgBox "計算が終わりました"

End Sub

複雑な計算はせず、というより数学の素養が無いから全く計算式が思いつかないだけですが、実に素直に順番に計算をしています。

で、JRAのサイトから適当なレースのオッズの値を利用し、実行してみました。最初はすぐに終わると思っていたのに、ぜんぜん終わる気配が無い。1時間以上経っても終わらないので中断……。

1時間15分動かした結果がこちら。
f:id:ta9mi3:20190812125632j:plain
12枠までの計算は順調に進んだのですが、そこから1枠に戻っては掛金の調整が入るというのを繰り返して、13枠以降が全くの手付かずです。最初、プログラムがバグってるんじゃないかと思ってしまいました。


この時点で6億超えてますが……。本当に合ってますかね?


しかし、これを見る限り、全頭買いでお金持ち計画は無理なんだなぁって思いました。だって、6億あったら馬券なんて買わなくていいもんね。