シートバッテングを極める部屋

「シートバッテングを極める部屋」の編集履歴(バックアップ)一覧に戻る

シートバッテングを極める部屋 - (2018/02/19 (月) 13:11:21) のソース

&bold(){シートバッティングを極める部屋}

*&bold(){投手も打者も『ガチ』でシートバッティングしたらどうなるか検証。}
*&bold(){乱数要素100%なので、その辺がわかってない人は今すぐページバックしてね。}

#region(※独自検証注意※)

***前提条件
1) 打者の勝利条件:ホームラン・ヒット・四球
2) 投手の勝利条件:三振
3) 投手のストライク率(どの程度ストライクを投げるか)は一定
4) 打者のスイング率(どの程度スイングするか)は一定


***プログラム(見たい人だけ)
#region(VBA)
Sub Macro1()
'
' Macro1 Macro

    Dim mat As Integer     '試合数
    Dim win As Integer     '投手勝利回数
    Dim res As Double      '投手勝率
    Dim S As Integer       'ストライク
    Dim B As Integer       'ボール
    Dim PITCH As Double    'ストライク率
    Dim BATER As Double    'スイング率
    Dim x As Double
    Dim y As Double
    
    For i = 0 To 10
        PITCH = ActiveSheet.Cells(23 + i, 7)
        BATER = ActiveSheet.Cells(23 + i, 9)
        mat = 0
        win = 0
        
        For mat = 1 To 10000  '10000回繰返し
        
            '①試合前処理
             S = 0
             B = 0
            
            '②試合中処理
            Do While S < 3 And B < 4
            
                ActiveSheet.Cells(1, 1) = 1  '乱数更新用
                
                '変数読み
                P_S = ActiveSheet.Cells(20, 7)  '乱数(0.00~1.00)
                B_S = ActiveSheet.Cells(20, 9)  '乱数(0.00~1.00)
                P_C = ActiveSheet.Cells(21, 7)  '乱数(0.00~1.00)
                B_C = ActiveSheet.Cells(21, 9)  '乱数(0.00~1.00)
                
                
                If (PITCH >= P_S) Then      '投手・ストライク選択
                    If (BATER >= B_S) Then      '打者・スイング選択
                        If (B_C >= 0.75) Then
                            B = 100
                        Else
                            S = S + 1
                        End If
                    Else                        '打者・見送り選択
                        S = S + 1
                    End If
                    
                Else                        '投手・ボール選択
                    If (BATER >= B_S) Then      '打者・スイング選択
                        S = S + 1
                        If (S >= 3 And B_C >= 0.75) Then S = 2      'ファウル続行
                    Else                        '打者・見送り選択
                        B = B + 1
                    End If
                End If
            Loop
            
            '③試合後処理
            If S >= 3 Then win = win + 1
        Next
        
        mat = mat - 1
        res = win / mat
        ActiveSheet.Cells(23 + i, 11) = res
    
    Next
    
End Sub
#endregion(VBA)


***試行結果(カウント別)
#region(表のみかた)
各カウントについて、
投手のストライク率・打者のスイング率を元に10000回のフリーバッティングを行う。
その結果を、打者の勝利条件(打者の出塁率)基準で数値化する。最小0.000~最大1.000

例えば、0ストライク・0ボールで
投手のストライク率=50%・打者のスイング率=50%とすると、
打者の勝率は0.269(26.9%)。逆に投手の勝率は0.731(73.1%)となる。

投手がどれだけストライクを選択するか
打者がどれだけスイングするのか(経験則で)わかっていれば、
各カウント毎に投手or打者の勝率を求めることができる。
#endregion(表のみかた)

#region(表1)
・0ストライク
#region(0ボール・0ストライク)
#image(https://i.imgur.com/oC43Bgq.png,width=700,height=350)
#endregion(0ボール・0ストライク)

#region(1ボール・0ストライク)
#image(https://i.imgur.com/9KnyOVh.png,width=700,height=350)
#endregion(1ボール・0ストライク)

#region(2ボール・0ストライク)
#image(https://i.imgur.com/vSyjA4Q.png,width=700,height=350)
#endregion(2ボール・0ストライク)

#region(3ボール・0ストライク)
#image(https://i.imgur.com/W2oYXyx.png,width=700,height=350)
#endregion(3ボール・0ストライク)

・1ストライク
#region(0ボール・1ストライク)
#image(https://i.imgur.com/Zwuh3fa.png,width=700,height=350)
#endregion(0ボール・1ストライク)

#region(1ボール・1ストライク)
#image(https://i.imgur.com/4muHLY2.png,width=700,height=350)
#endregion(1ボール・1ストライク)

#region(2ボール・1ストライク)
#image(https://i.imgur.com/MCY9Zbs.png,width=700,height=350)
#endregion(2ボール・1ストライク)

#region(3ボール・1ストライク)
#image(https://i.imgur.com/3j0EE1U.png,width=700,height=350)
#endregion(3ボール・1ストライク)

・2ストライク
#region(0ボール・2ストライク)
#image(https://i.imgur.com/b8LyiV7.png,width=700,height=350)
#endregion(0ボール・2ストライク)

#region(1ボール・2ストライク)
#image(https://i.imgur.com/5g7oT7A.png,width=700,height=350)
#endregion(1ボール・2ストライク)

#region(2ボール・2ストライク)
#image(https://i.imgur.com/O8JOcix.png,width=700,height=350)
#endregion(2ボール・2ストライク)

#region(3ボール・2ストライク)
#image(https://i.imgur.com/LwSo1Oe.png,width=700,height=350)
#endregion(3ボール・2ストライク)
#endregion(表1)


***試行結果(まとめ)
#region(グラフのみかた)
各カウントが推移するとともに、打者or投手の勝率がどの程度変化するか示す。
表1と同じく、打者の勝利条件(打者の出塁率)基準で数値化する。最小0.000~最大1.000
#endregion(グラフのみかた)

#region(グラフ1)
#image(https://i.imgur.com/edvlcHl.png,width=700,height=450)
#endregion(グラフ1)


***考察
あとで


#endregion(※独自検証注意※)

***ご意見・ご感想どうぞ
- あ~こ↓れ↑かぁ。ええやん  -- 名無しさん  (2018-02-19 08:30:34)
- 打者にとって五分五分以上の状況が3-0か3-1だけってほんまに投手有利やな  -- 名無しさん  (2018-02-19 13:11:21)
#comment()