Add files via upload
This commit is contained in:
1 parent
ecd70046d5
commit
c7bc604d75
1 file changed
+49
-44
+49
-44
@@ -8,17 +8,18 @@
|
||||
"\n",
|
||||
"# Dice Baseball\n",
|
||||
"\n",
|
||||
"The [March 22, 2019 Riddler](https://fivethirtyeight.com/features/can-you-turn-americas-pastime-into-a-game-of-yahtzee/) asks us to simulate baseball using probabilities from a 19th century dice game. There were some choices to make that were left unspecified in the rules; these are my choices (your choices may differ):\n",
|
||||
"The [March 22, 2019 Riddler](https://fivethirtyeight.com/features/can-you-turn-americas-pastime-into-a-game-of-yahtzee/) asks us to simulate baseball using probabilities from a 19th century dice game. There were some choices to make that were left unspecified in the rules; the following are my current choices (in an early version I made different choices that resulted in slightly more runs):\n",
|
||||
"\n",
|
||||
"* On a `b`-base hit, runners advance `b` bases, except that a runner on second scores on a 1-base hit.\n",
|
||||
"* On an \"out at first\", all runners advance one base.\n",
|
||||
"* On a double play, the runner on first is out if there is one, otherwise a runner on second, otherwise a runner on third, otherwise it is only a single out.\n",
|
||||
"* A double play only applies if there is a runner on first; in that case other runners advance.\n",
|
||||
"* On a fly out, a runner on third scores; other runners do not advance.\n",
|
||||
"* On an error all runners advance one base. (*Note: in an earlier version, I treated an error as a single, meaning that a runner would score from second on an error, which seems wrong. Under that interpretation, teams score about 0.05 runs more per game.*)\n",
|
||||
"* On an error all runners advance one base. \n",
|
||||
"* On a base on balls, only forced runners advance.\n",
|
||||
"\n",
|
||||
"I also made some choices about the implementation:\n",
|
||||
"- I wanted to have one event per batter, so I don't allow \"strike\" as an event. Rather I compute the probability of a strikeout event (i.e. getting three \"strike\" dice rolls in a row before getting another event) as `(7/36)**3`, and check for that.\n",
|
||||
"- Note that a die roll such as (1, 1) is a 1/36 event, whereas (1, 2) is a 2/36 event, because it is also (2, 1).\n",
|
||||
"- Note that a die roll such as (1, 1) is a 1/36 event, whereas (1, 2) is a 2/36 event, because it also represents (2, 1).\n",
|
||||
"- I'll represent events with the following one letter codes:\n",
|
||||
" - `K`, `O`, `o`, `f`, `D`: strikeout, foul out, out at first, fly out, double play\n",
|
||||
" - `1`, `2`, `3`, `4`: single, double, triple, home run\n",
|
||||
@@ -56,29 +57,29 @@
|
||||
" while True:\n",
|
||||
" x = 'K' if random.random() <= PK else random.choice(events)\n",
|
||||
" if verbose: print(f'outs: {outs}, runs: {runs}, runners: {runners}, event: {x}')\n",
|
||||
" if x in 'KOofD': # batter is out: strikeout, foul out, out at first, fly out, double play\n",
|
||||
" outs += 1\n",
|
||||
" if x == 'D' and runners: # double play\n",
|
||||
" runners.remove(min(runners))\n",
|
||||
" if x in 'KODof': # strikeout, foul out, double play, out at first, fly out, \n",
|
||||
" outs += 1 # Batter is out\n",
|
||||
" if x == 'D' and 1 in runners: # double play\n",
|
||||
" outs += 1\n",
|
||||
" runners = [r + 1 for r in runners if r != 1]\n",
|
||||
" elif x == 'o': # out at first (other runners advance)\n",
|
||||
" runners = [r+1 for r in runners]\n",
|
||||
" elif x == 'f' and 3 in runners: # fly out; runner on 3rd scores\n",
|
||||
" runners = [r + 1 for r in runners]\n",
|
||||
" elif x == 'f' and 3 in runners and outs < 3: # fly out; runner on 3rd scores\n",
|
||||
" runners.remove(3)\n",
|
||||
" runs += 1\n",
|
||||
" else: # batter reaches base safely\n",
|
||||
" runners.append(0)\n",
|
||||
" if x in '1234': # single, double, triple, homer\n",
|
||||
" else: \n",
|
||||
" runners.append(0) # Batter becomes a runner\n",
|
||||
" if x in '1234': # single, double, triple, homer\n",
|
||||
" runners = [r + int(x) + (r == 2) for r in runners]\n",
|
||||
" elif x == 'E': # error\n",
|
||||
" elif x == 'E': # error\n",
|
||||
" runners = [r + 1 for r in runners]\n",
|
||||
" elif x == 'B': # base on balls\n",
|
||||
" elif x == 'B': # base on balls\n",
|
||||
" runners = [r + all(b in runners for b in range(r)) for r in runners]\n",
|
||||
" # See if inning is over, and if not, whether anyone scored\n",
|
||||
" if outs >= 3:\n",
|
||||
" return runs\n",
|
||||
" else: # See if anybody scored\n",
|
||||
" runs += sum(r >= 4 for r in runners)\n",
|
||||
" runners = [r for r in runners if r < 4]"
|
||||
" runs += sum(r >= 4 for r in runners)\n",
|
||||
" runners = [r for r in runners if r < 4]"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -97,20 +98,19 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"outs: 0, runs: 0, runners: [], event: 4\n",
|
||||
"outs: 0, runs: 1, runners: [], event: E\n",
|
||||
"outs: 0, runs: 1, runners: [1], event: 1\n",
|
||||
"outs: 0, runs: 1, runners: [2, 1], event: 4\n",
|
||||
"outs: 0, runs: 4, runners: [], event: 3\n",
|
||||
"outs: 0, runs: 4, runners: [3], event: o\n",
|
||||
"outs: 1, runs: 5, runners: [], event: o\n",
|
||||
"outs: 2, runs: 5, runners: [], event: f\n"
|
||||
"outs: 0, runs: 0, runners: [], event: O\n",
|
||||
"outs: 1, runs: 0, runners: [], event: 1\n",
|
||||
"outs: 1, runs: 0, runners: [1], event: o\n",
|
||||
"outs: 2, runs: 0, runners: [2], event: B\n",
|
||||
"outs: 2, runs: 0, runners: [2, 1], event: 3\n",
|
||||
"outs: 2, runs: 2, runners: [3], event: E\n",
|
||||
"outs: 2, runs: 3, runners: [1], event: f\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"5"
|
||||
"3"
|
||||
]
|
||||
},
|
||||
"execution_count": 3,
|
||||
@@ -131,12 +131,12 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"outs: 0, runs: 0, runners: [], event: o\n",
|
||||
"outs: 1, runs: 0, runners: [], event: D\n",
|
||||
"outs: 2, runs: 0, runners: [], event: 1\n",
|
||||
"outs: 2, runs: 0, runners: [1], event: E\n",
|
||||
"outs: 2, runs: 0, runners: [2, 1], event: 3\n",
|
||||
"outs: 2, runs: 2, runners: [3], event: o\n"
|
||||
"outs: 0, runs: 0, runners: [], event: 3\n",
|
||||
"outs: 0, runs: 0, runners: [3], event: 1\n",
|
||||
"outs: 0, runs: 1, runners: [1], event: 2\n",
|
||||
"outs: 0, runs: 1, runners: [3, 2], event: D\n",
|
||||
"outs: 1, runs: 1, runners: [3, 2], event: f\n",
|
||||
"outs: 2, runs: 2, runners: [2], event: o\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -163,20 +163,25 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"outs: 0, runs: 0, runners: [], event: f\n",
|
||||
"outs: 1, runs: 0, runners: [], event: 1\n",
|
||||
"outs: 1, runs: 0, runners: [1], event: B\n",
|
||||
"outs: 1, runs: 0, runners: [2, 1], event: B\n",
|
||||
"outs: 1, runs: 0, runners: [3, 2, 1], event: 1\n",
|
||||
"outs: 1, runs: 2, runners: [2, 1], event: 3\n",
|
||||
"outs: 1, runs: 4, runners: [3], event: o\n",
|
||||
"outs: 2, runs: 5, runners: [], event: K\n"
|
||||
"outs: 0, runs: 0, runners: [], event: 4\n",
|
||||
"outs: 0, runs: 1, runners: [], event: 1\n",
|
||||
"outs: 0, runs: 1, runners: [1], event: B\n",
|
||||
"outs: 0, runs: 1, runners: [2, 1], event: 1\n",
|
||||
"outs: 0, runs: 2, runners: [2, 1], event: f\n",
|
||||
"outs: 1, runs: 2, runners: [2, 1], event: 2\n",
|
||||
"outs: 1, runs: 3, runners: [3, 2], event: 3\n",
|
||||
"outs: 1, runs: 5, runners: [3], event: B\n",
|
||||
"outs: 1, runs: 5, runners: [3, 1], event: B\n",
|
||||
"outs: 1, runs: 5, runners: [3, 2, 1], event: 1\n",
|
||||
"outs: 1, runs: 7, runners: [2, 1], event: 1\n",
|
||||
"outs: 1, runs: 8, runners: [2, 1], event: o\n",
|
||||
"outs: 2, runs: 8, runners: [3, 2], event: o\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"5"
|
||||
"8"
|
||||
]
|
||||
},
|
||||
"execution_count": 5,
|
||||
@@ -223,7 +228,7 @@
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"14.959092"
|
||||
"14.457532"
|
||||
]
|
||||
},
|
||||
"execution_count": 7,
|
||||
@@ -232,7 +237,7 @@
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 432x288 with 1 Axes>"
|
||||
]
|
||||
|
||||
Reference in new issue
Block a user