[PYTHON] Versuchen Sie, mit einem Baseball-Simulator Nr. 1 zu spielen. Ist der Feed Bunt effektiv?

Einführung

Als eine neuere Baseball-Strategie wird gesagt, dass es besser ist, zu schlagen, ohne einen Bunt auf die erste Basis ohne Tod zu schicken, aber ich habe mich gefragt, ob es wirklich richtig ist, also habe ich es überprüft. Ich denke, das Gleiche wurde bereits getan, aber ich habe beschlossen, es für mein eigenes Studium zu versuchen.

Methode

Ich habe es mit etwas Monte Carlo berechnet. Die Sprache ist Python. Der Code ist am Ende.

Streikannahme

Die folgenden markanten Linien werden angenommen.

・ Alle Schläger sind einheitlich ・ Die Wahrscheinlichkeit von Treffern pro Sitz beträgt 30%, und ein Drittel der Treffer erfolgt auf doppelter Basis. ・ 35% Chance, pro Sitzplatz auf die Basis zu kommen ・ Wenn die Wahrscheinlichkeit, einen Treffer zu erzielen, 65% beträgt und ein doppelter Kill auftritt (Beispiel: kein Tod oder 1. Basis mit einem Tod), werden 50% der Treffer doppelt getötet. ・ Überlebensrate der Heimatbasis: Im Fall der zweiten Basis des Läufers werden beispielsweise 100% auf der 2. Basis und 50% auf einem einzigen Treffer erzielt. ・ Im Fall der 3. Base des Läufers werden etwa 10% der Treffer als Squeeze / Opfer behandelt (1 Out, 1 weitere Punktzahl).

Je nach Fall gibt es andere detaillierte Bedingungen, aber ich werde die Erklärung weglassen. Einzelheiten finden Sie im Code (es ist leider schwer zu sehen ...).

Über den Umgang mit dem Futter bunt

Die Handhabung des Feed Bunt ist wie folgt.

・ Wenn zum Zeitpunkt des Todes oder der 1. Todesbasis oder der 12. Todesbasis keine Läufer vorrücken, anstatt eine zu erhöhen (die erstere wird zur zweiten Basis für einen Tod oder zwei Todesfälle, die letztere zur 23. Todesbasis). Die Erfolgsquote beträgt 100%.

Es ist auch der Fall, dass angenommen wird, dass Home-Base-Treffer und Third-Base-Treffer nicht im Annahme-Teil des Teigs auftreten, aber da der Feed-Bunt immer als erfolgreich behandelt wird, wird die Feed-Bunt-Taktik auf vorteilhafte Weise eingestellt.

Ergebnis 1

Die horizontale Achse ist die Anzahl der Angriffs-Innings und die vertikale Achse ist die erwartete Punktzahl pro Inning. Zusätzlich zeigt die rote Linie die Schwankung des Wertes, wenn das erzwungene Maß genommen wird, und die blaue Linie zeigt die Schwankung des Wertes, wenn das sendende Bunt-Maß genommen wird. Wie in der Abbildung gezeigt, ist die erwartete Punktzahl höher, wenn die Trefferwahrscheinlichkeit pro Treffersitz im Durchschnitt etwa 30% beträgt, wenn Sie harte Maßnahmen ergreifen. ex_v2_Simuresult.png

Ergebnis 2

Ich habe den Fall berechnet, in dem die Trefferwahrscheinlichkeit pro Sitzplatz auf 25% und die Wahrscheinlichkeit, pro Sitzplatz auf die Basis zu kommen, auf 30% geändert wurde. Andere Bedingungen sind dieselben wie bei der vorherigen Berechnung. Wie in der Abbildung gezeigt, ist die erwartete Punktzahl etwas höher, wenn die Feed-Bunt-Messung durchgeführt wird. ex_v2_2_Simuresult.png

Zusammenfassung

Es überrascht nicht, dass sich effektive Strategien in Abhängigkeit von der Trefferwahrscheinlichkeit ändern. Ich habe verschiedene Bedingungen nicht ausprobiert, daher kann ich es nicht unbedingt sagen, aber ich habe das Gefühl, dass es einen Wendepunkt gibt, an dem die Trefferwahrscheinlichkeit pro Sitzplatz etwa 25% beträgt (oder die Wahrscheinlichkeit, pro Sitzplatz auf die Basis zu kommen, 30% beträgt). ..

Danach ist die Anzahl der Test-Innings für Turnierspiele wie High-School-Baseball zu gering. Ich denke, es gibt einen Teil, in dem nicht gesagt werden kann, dass beide Strategien effektiv funktionieren. Um es anders herum auszudrücken, ich finde es interessant, dass die Farben für jedes Team durch verschiedene beste Strategien hervorgehoben werden.

Über die Zukunft

Ich möchte es verbessern, damit die Trefferquote usw. für jeden Schlagmann streng festgelegt werden kann, und ich denke, es wäre besser, Faktoren wie Stehlen einzubeziehen.

Code

Der Code wird unten angezeigt. Es ist sehr überflüssig und kompliziert, weil es ein Anfänger ist ... Ich möchte dies auch verbessern. Die folgende Berechnung gilt für Ergebnis 2.

Baseball_Simulator_v1.py


#coding: utf-8
#average_Hitting=0.25
#average_go_on_base=0.30
import numpy as np
import random
import matplotlib.pyplot as plt

random.seed(0)

def HitResult(p,runner,out,R):
    #no runner
    if runner == 0:
        if p < 0.:
            R = R+1 #homerun
        elif p < 0.:
            runner = 3 #triple
        elif p < 0.083333:
            runner = 2 #double
        elif p < 0.30:
            runner = 1 #single
        else:
            out = out+1 #out
    #runner on base1
    elif runner == 1:
        if p < 0.:
            runner = 0
            R = R+2 #two run homerun
        elif p < 0.:
            runner = 3
            R = R+1 #clutch triple
        elif p < 0.041666:
            runner = 2
            R = R+1 #clutch double
        elif p < 0.083333:
            runner = 23 #double
        elif p < 0.166666:
            runner = 13 #single with base3
        elif p < 0.3:
            runner = 12 #single or walk
        elif p < 0.65:
            out = out+1 #out
        else:
            runner = 0
            out = out+2 #double play
    #runner on base2
    elif runner == 2:
        if p < 0.:
            runner = 0
            R = R+2 #two run homerun
        elif p < 0.:
            runner = 3 #clutch triple
            R = R+1
        elif p < 0.083333:
            R = R+1 #clutch double
        elif p < 0.166666:
            runner = 1
            R = R+1 #clutch single
        elif p < 0.25:
            runner = 13 #single
        elif p < 0.30:
            runner = 12 #walk
        elif p < 0.9:
            out = out+1 #out
        else:
            runner = 0
            out = out+2 #double play
    #runner on base3
    elif runner == 3:
        if p < 0.:
            runner = 0
            R = R+2 #two run homerun
        elif p < 0.:
            runner = 3
            R = R+1 #clutch triple
        elif p < 0.083333:
            runner = 2
            R = R+1 #clutch double
        elif p < 0.25:
            runner = 1
            R = R+1 #clutch single
        elif p < 0.30:
            runner = 13 #walk
        elif p < 0.45:
            if out <= 1:
                runner = 0
                R = R+1
            out = out+1 #sacrifice out
        elif p < 0.9:
            out = out+1 #out
        else:
            runner = 0
            out = out+2 #double play
    #runner on base1 and base2
    elif runner == 12:
        if p < 0.:
            runner = 0
            R = R+3 #three run homerun
        elif p < 0.:
            runner = 3
            R = R+2 #2 clutches triple
        elif p < 0.041666:
            runner = 2
            R = R+2 #2 clutches double
        elif p < 0.083333:
            runner = 23
            R = R+1 #clutch double
        elif p < 0.138888:
            runner = 13
            R = R+1 #clutch single with base3
        elif p < 0.194444:
            runner = 12
            R = R+1 #clutch single
        elif p < 0.30:
            runner = 123 #single or walk
        elif p < 0.65:
            out = out+1 #out
        elif p < 0.825:
            runner = 2
            out = out+2 #double play through base3
        elif p < 0.99:
            runner = 3
            out = out+2 #double play through base2
        else:
            runner = 0
            out = out+3 #triple play
    #runner on base1 and base3
    elif runner == 13:
        if p < 0.:
            runner = 0
            R = R+3 #three run homerun
        elif p < 0.:
            runner = 3
            R = R+2 #2 clutches triple
        elif p < 0.041666:
            runner = 2
            R = R+2 #2 clutches double
        elif p < 0.083333:
            runner = 23
            R = R+1 #clutch double
        elif p < 0.166666:
            runner = 13
            R = R+1 #clutch single with base3
        elif p < 0.25:
            runner = 12
            R = R+1 #clutch single
        elif p < 0.30:
            runner = 123 #walk
        elif p < 0.45:
            if out <= 1:
                runner = 1
                R = R+1
            out = out+1 #sacrifice out
        elif p < 0.52:
            if out <= 1:
                R = R+1
                runner = 1
            out = out+1 #double play failure
        elif p < 0.68:
            out = out+1 #out
        elif p < 0.84:
            runner = 12
            out = out+1 #out on home
        elif p < 0.99:
            if out == 0:
                R = R+1
            out = out+2 #double play
        else:
            out = out+3 #triple play
    #runner on base2 and base3
    elif runner == 23:
        if p < 0.:
            runner = 0
            R = R+3 #three run homerun
        elif p < 0.:
            runner = 3
            R = R+2 #2 clutches triple
        elif p < 0.083333:
            runner = 2
            R = R+2 #2 clutches double
        elif p < 0.166666:
            runner = 1
            R = R+2 #2 clutches single
        elif p < 0.25:
            runner = 13
            R = R+1 #clutch single
        elif p < 0.30:
            runner = 123 #walk
        elif p < 0.45:
            if out <= 1:
                runner = 2
                R = R+1
            out = out+1 #sacrifice out
        elif p < 0.9:
            out = out+1 #out
        elif p < 0.995:
            runner = 2
            out = out+2 #double play
        else:
            runner = 0
            out = out+3 #triple play
    #runner on all bases
    else:
        if p < 0.:
            runner = 0
            R = R+4 #four run homerun
        elif p < 0.:
            runner = 3
            R = R+3 #3 clutches triple
        elif p < 0.041666:
            runner = 2
            R = R+3 #3 clutches double
        elif p < 0.083333:
            runner = 23
            R = R+2 #2 clutches double
        elif p < 0.138888:
            runner = 13
            R = R+2 #2 clutches single with base3
        elif p < 0.194444:
            runner = 12
            R = R+2 #2 clutches single
        elif p < 0.30:
            R = R+1 #clutch single or clutch walk
        elif p < 0.45:
            if out <= 1:
                runner = 12
                R = R+1
            out = out+1 #sacrifice out
        elif p < 0.675:
            out = out+1 #out
        elif p < 0.99:
            runner = 23
            out = out+2 #double play through home
        else:
            runner = 0
            out = out+3 #triple play

    return runner,out,R

def BuntResult(p,runner,out,R):
    #no runner
    if runner == 0:
        if p < 0.:
            R = R+1 #homerun
        elif p < 0.:
            runner = 3 #triple
        elif p < 0.1:
            runner = 2 #double
        elif p < 0.35:
            runner = 1 #single
        else:
            out = out+1 #out
    #runner on base1
    elif runner == 1:
        if out == 2:
            if p < 0.:
                runner = 0
                R = R+2 #two run homerun
            elif p < 0.:
                runner = 3
                R = R+1 #clutch triple
            elif p < 0.041666:
                runner = 2
                R = R+1 #clutch double
            elif p < 0.083333:
                runner = 23 #double
            elif p < 0.166666:
                runner = 13 #single with base3
            elif p < 0.30:
                runner = 12 #single
            elif p < 0.65:
                out = out+1 #out
            else:
                runner = 0
                out = out+2 #double play
        else:
            if p < 1.:
                runner = 2
                out = out+1 #sacrifice bunt
            elif p < 999:
                out = out+1 #bunt failure
            else:
                runner = 0
                out = out+2 #double play
    #runner on base2
    elif runner == 2:
        if out == 0:
            if p < 1.:
                runner = 3
                out = out+1 #sacrifice bunt
            elif p < 999:
                out = out+1 #bunt failure
            else:
                runner = 1
                out = out+1 #bunt failure
        else:
            if p < 0.:
                runner = 0
                R = R+2 #two run homerun
            elif p < 0.:
                runner = 3 #clutch triple
                R = R+1
            elif p < 0.083333:
                R = R+1 #clutch double
            elif p < 0.166666:
                runner = 1
                R = R+1 #clutch single
            elif p < 0.25:
                runner = 13 #single
            elif p < 0.30:
                runner = 12 #walk
            elif p < 0.9:
                out = out+1 #out
            else:
                runner = 0
                out = out+2 #double play
    #runner on base3
    elif runner == 3:
        if p < 0.:
            runner = 0
            R = R+2 #two run homerun
        elif p < 0.:
            runner = 3
            R = R+1 #clutch triple
        elif p < 0.083333:
            runner = 2
            R = R+1 #clutch double
        elif p < 0.25:
            runner = 1
            R = R+1 #clutch single
        elif p < 0.30:
            runner = 13 #walk
        elif p < 0.45:
            if out <= 1:
                runner = 0
                R = R+1
            out = out+1 #sacrifice out
        elif p < 0.9:
            out = out+1 #out
        else:
            runner = 0
            out = out+2 #double play
    #runner on base1 and base2
    elif runner == 12:
        if out == 0:
            if p < 1.:
                runner = 23
                out = out+1 #sacrifice bunt
            elif p < 999:
                out = out+1 #bunt failure
            else:
                runner = 2
                out = out+2 #bunt failure (double play)
        else:
            if p < 0.:
                runner = 0
                R = R+3 #three run homerun
            elif p < 0.:
                runner = 3
                R = R+2 #2 clutches triple
            elif p < 0.041666:
                runner = 2
                R = R+2 #2 clutches double
            elif p < 0.083333:
                runner = 23
                R = R+1 #clutch double
            elif p < 0.138888:
                runner = 13
                R = R+1 #clutch single with base3
            elif p < 0.194444:
                runner = 12
                R = R+1 #clutch single
            elif p < 0.30:
                runner = 123 #single or walk
            elif p < 0.65:
                out = out+1 #out
            elif p < 0.825:
                runner = 2
                out = out+2 #double play through base3
            elif p < 0.99:
                runner = 3
                out = out+2 #double play through base2
            else:
                runner = 0
                out = out+3 #triple play
    #runner on base1 and base3
    elif runner == 13:
        if p < 0.:
            runner = 0
            R = R+3 #three run homerun
        elif p < 0.:
            runner = 3
            R = R+2 #2 clutches triple
        elif p < 0.041666:
            runner = 2
            R = R+2 #2 clutches double
        elif p < 0.083333:
            runner = 23
            R = R+1 #clutch double
        elif p < 0.166666:
            runner = 13
            R = R+1 #clutch single with base3
        elif p < 0.25:
            runner = 12
            R = R+1 #clutch single
        elif p < 0.30:
            runner = 123 #walk
        elif p < 0.45:
            if out <= 1:
                runner = 1
                R = R+1
            out = out+1 #sacrifice out
        elif p < 0.52:
            if out <= 1:
                R = R+1
                runner = 1
            out = out+1 #double play failure
        elif p < 0.68:
            out = out+1 #out
        elif p < 0.84:
            runner = 12
            out = out+1 #out on home
        elif p < 0.99:
            if out == 0:
                R = R+1
            out = out+2 #double play
        else:
            out = out+3 #triple play
    #runner on base2 and base3
    elif runner == 23:
        if p < 0.:
            runner = 0
            R = R+3 #three run homerun
        elif p < 0.:
            runner = 3
            R = R+2 #2 clutches triple
        elif p < 0.083333:
            runner = 2
            R = R+2 #2 clutches double
        elif p < 0.166666:
            runner = 1
            R = R+2 #2 clutches single
        elif p < 0.25:
            runner = 13
            R = R+1 #clutch single
        elif p < 0.30:
            runner = 123 #walk
        elif p < 0.45:
            if out <= 1:
                runner = 2
                R = R+1
            out = out+1 #sacrifice out
        elif p < 0.9:
            out = out+1 #out
        elif p < 0.995:
            runner = 2
            out = out+2 #double play
        else:
            runner = 0
            out = out+3 #triple play
    #runner on all bases
    else:
        if p < 0.:
            runner = 0
            R = R+4 #four run homerun
        elif p < 0.:
            runner = 3
            R = R+3 #3 clutches triple
        elif p < 0.041666:
            runner = 2
            R = R+3 #3 clutches double
        elif p < 0.083333:
            runner = 23
            R = R+2 #2 clutches double
        elif p < 0.138888:
            runner = 13
            R = R+2 #2 clutches single with base3
        elif p < 0.194444:
            runner = 12
            R = R+2 #2 clutches single
        elif p < 0.30:
            R = R+1 #clutch single or clutch walk
        elif p < 0.45:
            if out <= 1:
                runner = 12
                R = R+1
            out = out+1 #sacrifice out
        elif p < 0.65:
            out = out+1 #out
        elif p < 0.99:
            runner = 23
            out = out+2 #double play through home
        else:
            runner = 0
            out = out+3 #triple play

    return runner,out,R

#Initial condition
inning = 1
max_inning = 10000
runner = 0
out = 0
R = 0
sum_num1 = 0
sum_num2 = 0
sum_num3 = 0
sum_num4 = 0
sum_num5 = 0
sum_num6 = 0
sum_num7 = 0
sum_num8 = 0
sum_num9 = 0
sum_num10 = 0

R_array_Hit1 = np.zeros((max_inning+1,1))
R_array_Hit2 = np.zeros((max_inning+1,1))
R_array_Hit3 = np.zeros((max_inning+1,1))
R_array_Hit4 = np.zeros((max_inning+1,1))
R_array_Hit5 = np.zeros((max_inning+1,1))
R_array_Hit6 = np.zeros((max_inning+1,1))
R_array_Hit7 = np.zeros((max_inning+1,1))
R_array_Hit8 = np.zeros((max_inning+1,1))
R_array_Hit9 = np.zeros((max_inning+1,1))
R_array_Hit10 = np.zeros((max_inning+1,1))

Exp_R_Hit1 = np.zeros((max_inning+1,1))
Exp_R_Hit2 = np.zeros((max_inning+1,1))
Exp_R_Hit3 = np.zeros((max_inning+1,1))
Exp_R_Hit4 = np.zeros((max_inning+1,1))
Exp_R_Hit5 = np.zeros((max_inning+1,1))
Exp_R_Hit6 = np.zeros((max_inning+1,1))
Exp_R_Hit7 = np.zeros((max_inning+1,1))
Exp_R_Hit8 = np.zeros((max_inning+1,1))
Exp_R_Hit9 = np.zeros((max_inning+1,1))
Exp_R_Hit10 = np.zeros((max_inning+1,1))

#inning_array = np.zeros((max_inning+1,1))

#Simulation in case of hitting
for i in range(1,11):
    for inning in range(1,max_inning+1):
        while True:
            p = random.random()
            runner,out,R = HitResult(p,runner,out,R)
            if out >= 3:
                break
        if i == 1:
            R_array_Hit1[inning,0] = R
            sum_num1 = sum_num1 + R
            Exp_R_Hit1[inning,0] = float(sum_num1)/inning
        elif i == 2:
            R_array_Hit2[inning,0] = R
            sum_num2 = sum_num2 + R
            Exp_R_Hit2[inning,0] = float(sum_num2)/inning
        elif i == 3:
            R_array_Hit3[inning,0] = R
            sum_num3 = sum_num3 + R
            Exp_R_Hit3[inning,0] = float(sum_num3)/inning
        elif i == 4:
            R_array_Hit4[inning,0] = R
            sum_num4 = sum_num4 + R
            Exp_R_Hit4[inning,0] = float(sum_num4)/inning
        elif i == 5:
            R_array_Hit5[inning,0] = R
            sum_num5 = sum_num5 + R
            Exp_R_Hit5[inning,0] = float(sum_num5)/inning
        elif i == 6:
            R_array_Hit6[inning,0] = R
            sum_num6 = sum_num6 + R
            Exp_R_Hit6[inning,0] = float(sum_num6)/inning
        elif i == 7:
            R_array_Hit7[inning,0] = R
            sum_num7 = sum_num7 + R
            Exp_R_Hit7[inning,0] = float(sum_num7)/inning
        elif i == 8:
            R_array_Hit8[inning,0] = R
            sum_num8 = sum_num8 + R
            Exp_R_Hit8[inning,0] = float(sum_num8)/inning
        elif i == 9:
            R_array_Hit9[inning,0] = R
            sum_num9 = sum_num9 + R
            Exp_R_Hit9[inning,0] = float(sum_num9)/inning
        else:
            R_array_Hit10[inning,0] = R
            sum_num10 = sum_num10 + R
            Exp_R_Hit10[inning,0] = float(sum_num10)/inning
        #Initialize conditions
        runner = 0
        out = 0
        R = 0
        inning = inning+1
    i = i+1


#Initial condition
inning = 1
max_inning = 10000
runner = 0
out = 0
R = 0
sum_num1 = 0
sum_num2 = 0
sum_num3 = 0
sum_num4 = 0
sum_num5 = 0
sum_num6 = 0
sum_num7 = 0
sum_num8 = 0
sum_num9 = 0
sum_num10 = 0

R_array_Bunt1 = np.zeros((max_inning+1,1))
R_array_Bunt2 = np.zeros((max_inning+1,1))
R_array_Bunt3 = np.zeros((max_inning+1,1))
R_array_Bunt4 = np.zeros((max_inning+1,1))
R_array_Bunt5 = np.zeros((max_inning+1,1))
R_array_Bunt6 = np.zeros((max_inning+1,1))
R_array_Bunt7 = np.zeros((max_inning+1,1))
R_array_Bunt8 = np.zeros((max_inning+1,1))
R_array_Bunt9 = np.zeros((max_inning+1,1))
R_array_Bunt10 = np.zeros((max_inning+1,1))

Exp_R_Bunt1 = np.zeros((max_inning+1,1))
Exp_R_Bunt2 = np.zeros((max_inning+1,1))
Exp_R_Bunt3 = np.zeros((max_inning+1,1))
Exp_R_Bunt4 = np.zeros((max_inning+1,1))
Exp_R_Bunt5 = np.zeros((max_inning+1,1))
Exp_R_Bunt6 = np.zeros((max_inning+1,1))
Exp_R_Bunt7 = np.zeros((max_inning+1,1))
Exp_R_Bunt8 = np.zeros((max_inning+1,1))
Exp_R_Bunt9 = np.zeros((max_inning+1,1))
Exp_R_Bunt10 = np.zeros((max_inning+1,1))

#inning_array = np.zeros((max_inning+1,1))

#Simulation in case of bunt
for i in range(1,11):
    for inning in range(1,max_inning+1):
        while True:
            p = random.random()
            runner,out,R = BuntResult(p,runner,out,R)
            if out >= 3:
                break
        if i == 1:
            R_array_Bunt1[inning,0] = R
            sum_num1 = sum_num1 + R
            Exp_R_Bunt1[inning,0] = float(sum_num1)/inning
        elif i == 2:
            R_array_Bunt2[inning,0] = R
            sum_num2 = sum_num2 + R
            Exp_R_Bunt2[inning,0] = float(sum_num2)/inning
        elif i == 3:
            R_array_Bunt3[inning,0] = R
            sum_num3 = sum_num3 + R
            Exp_R_Bunt3[inning,0] = float(sum_num3)/inning
        elif i == 4:
            R_array_Bunt4[inning,0] = R
            sum_num4 = sum_num4 + R
            Exp_R_Bunt4[inning,0] = float(sum_num4)/inning
        elif i == 5:
            R_array_Bunt5[inning,0] = R
            sum_num5 = sum_num5 + R
            Exp_R_Bunt5[inning,0] = float(sum_num5)/inning
        elif i == 6:
            R_array_Bunt6[inning,0] = R
            sum_num6 = sum_num6 + R
            Exp_R_Bunt6[inning,0] = float(sum_num6)/inning
        elif i == 7:
            R_array_Bunt7[inning,0] = R
            sum_num7 = sum_num7 + R
            Exp_R_Bunt7[inning,0] = float(sum_num7)/inning
        elif i == 8:
            R_array_Bunt8[inning,0] = R
            sum_num8 = sum_num8 + R
            Exp_R_Bunt8[inning,0] = float(sum_num8)/inning
        elif i == 9:
            R_array_Bunt9[inning,0] = R
            sum_num9 = sum_num9 + R
            Exp_R_Bunt9[inning,0] = float(sum_num9)/inning
        else:
            R_array_Bunt10[inning,0] = R
            sum_num10 = sum_num10 + R
            Exp_R_Bunt10[inning,0] = float(sum_num10)/inning
        #Initialize conditions
        runner = 0
        out = 0
        R = 0
        inning = inning+1
    i = i+1

ave_Exp_R_Hit = np.zeros((max_inning+1,1))
ave_Exp_R_Bunt = np.zeros((max_inning+1,1))

all_Exp_R_Hit = np.array([])
all_Exp_R_Hit = np.hstack((Exp_R_Hit1,Exp_R_Hit2,Exp_R_Hit3,Exp_R_Hit4,Exp_R_Hit5,Exp_R_Hit6,Exp_R_Hit7,Exp_R_Hit8,Exp_R_Hit9,Exp_R_Hit10))
all_Exp_R_Bunt = np.array([])
all_Exp_R_Bunt = np.hstack((Exp_R_Bunt1,Exp_R_Bunt2,Exp_R_Bunt3,Exp_R_Bunt4,Exp_R_Bunt5,Exp_R_Bunt6,Exp_R_Bunt7,Exp_R_Bunt8,Exp_R_Bunt9,Exp_R_Bunt10))

for inning in range(1,max_inning+1):
    ave_Exp_R_Hit[inning,0] = np.average(all_Exp_R_Hit[inning,:])
    ave_Exp_R_Bunt[inning,0] = np.average(all_Exp_R_Bunt[inning,:])

print "Exp_RunScore_Hitting",ave_Exp_R_Hit[max_inning,0]
print "Exp_RunScore_Bunt",ave_Exp_R_Bunt[max_inning,0]

plt.xlabel("Number of innings")
plt.ylabel("Expected Runs Score per inning")
plt.axis([0,max_inning,0.0,2])
plt.plot(Exp_R_Hit1,'r',alpha=0.2)
plt.plot(Exp_R_Hit2,'r',alpha=0.2)
plt.plot(Exp_R_Hit3,'r',alpha=0.2)
plt.plot(Exp_R_Hit4,'r',alpha=0.2)
plt.plot(Exp_R_Hit5,'r',alpha=0.2)
plt.plot(Exp_R_Hit6,'r',alpha=0.2)
plt.plot(Exp_R_Hit7,'r',alpha=0.2)
plt.plot(Exp_R_Hit8,'r',alpha=0.2)
plt.plot(Exp_R_Hit9,'r',alpha=0.2)
plt.plot(Exp_R_Hit10,'r',alpha=0.2)
plt.plot(ave_Exp_R_Hit,'r',label="Hitting")

plt.plot(Exp_R_Bunt1,'b',alpha=0.2)
plt.plot(Exp_R_Bunt2,'b',alpha=0.2)
plt.plot(Exp_R_Bunt3,'b',alpha=0.2)
plt.plot(Exp_R_Bunt4,'b',alpha=0.2)
plt.plot(Exp_R_Bunt5,'b',alpha=0.2)
plt.plot(Exp_R_Bunt6,'b',alpha=0.2)
plt.plot(Exp_R_Bunt7,'b',alpha=0.2)
plt.plot(Exp_R_Bunt8,'b',alpha=0.2)
plt.plot(Exp_R_Bunt9,'b',alpha=0.2)
plt.plot(Exp_R_Bunt10,'b',alpha=0.2)
plt.plot(ave_Exp_R_Bunt,'b',label="Bunt")
plt.legend()
plt.grid(True)
plt.savefig('ex_v2_2_Simuresult.png')
'''
plt.hist(R_array_Hit,bins=10)
plt.hist(R_array_Bunt,bins=10)
plt.show()
'''

quit()

Recommended Posts

Versuchen Sie, mit einem Baseball-Simulator Nr. 1 zu spielen. Ist der Feed Bunt effektiv?
Versuchen Sie, mit einer Shell zu programmieren!
Das Bild ist Namekuji
Ist die neue Corona wirklich eine Bedrohung? Validiert mit Stan (war)
[Python] Was ist eine with-Anweisung?
Mit PyEphem ist der Weltraum gefährlich
Versuchen Sie, das Bild mit opencv2 zu verwischen
Versuchen Sie, das Problem des Handlungsreisenden mit einem genetischen Algorithmus zu lösen (Theorie)
Erstellen Sie eine Drohnen-Simulator-Umgebung und versuchen Sie einen einfachen Flug mit Mission Planner