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

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

シートバッテングを極める部屋 - (2018/02/19 (月) 08:30:34) の編集履歴(バックアップ)


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

投手も打者も『ガチ』でシートバッティングしたらどうなるか検証。

乱数要素100%なので、その辺がわかってない人は今すぐページバックしてね。


+ ※独自検証注意※

前提条件

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


プログラム(見たい人だけ)

+ 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


試行結果(カウント別)

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

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

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

+ 表1
  • 0ストライク
+ 0ボール・0ストライク

+ 1ボール・0ストライク

+ 2ボール・0ストライク

+ 3ボール・0ストライク

  • 1ストライク
+ 0ボール・1ストライク

+ 1ボール・1ストライク

+ 2ボール・1ストライク

+ 3ボール・1ストライク

  • 2ストライク
+ 0ボール・2ストライク

+ 1ボール・2ストライク

+ 2ボール・2ストライク

+ 3ボール・2ストライク


試行結果(まとめ)

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

+ グラフ1


考察

あとで



ご意見・ご感想どうぞ

  • あ~こ↓れ↑かぁ。ええやん -- 名無しさん (2018-02-19 08:30:34)
名前:
コメント: