-
Notifications
You must be signed in to change notification settings - Fork 57
/
gamblers_ruin_simulation.html
408 lines (351 loc) · 11.8 KB
/
gamblers_ruin_simulation.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
<html>
<head>
<title>
GAMBLERS_RUIN_SIMULATION - Simulation of Gambler's Ruin
</title>
</head>
<body bgcolor="#EEEEEE" link="#CC0000" alink="#FF3300" vlink="#000055">
<h1 align = "center">
GAMBLERS_RUIN_SIMULATION <br> Simulation of Gambler's Ruin
</h1>
<hr>
<p>
<b>GAMBLERS_RUIN_SIMULATION</b>
is a MATLAB program which
simulates the game of gambler's ruin.
</p>
<p>
In the game of gambler's ruin, two gamblers, A and B, start with
$A_STAKES and $B_STAKES, respectively, and play until one of them
is bankrupt. They repeatedly flip a coin. On heads, A wins one dollar from B,
and on tails, B wins one dollar from A.
</p>
<p>
The game is easy to simulate, and can also be analyzed. It is worth
study in part because the analysis or simulation of the game reveals
some surprising features about the chances of winning, the typical length
of a game, and the number of times each player will be in the lead.
</p>
<p>
In particular, most people will be surprised to find that if A starts with
$1 and B with $100, the "average" game will take 100 coin tosses.
</p>
<p>
It is known that, if A and B start the game with $A_STAKES and $B_STAKES,
<ul>
<li>
the expected number of coin tosses required to complete the game is
A_STAKES * B_STAKES.
</li>
<li>
the probability that A will win the game is A_STAKES / ( A_STAKES+B_STAKES).
</li>
<li>
the lead may change many times in one game, but, if a large number of
games are played, the most common case is that the lead never changes.
</li>
</ul>
</p>
<p>
Note that the game of gambler's ruin can be regarded as a case of a 1D
random walk in a finite region, in which the "particle" starts A_STAKES
steps from one wall and B_STAKES steps from the other, and in which
the walk ends when the particle strikes a wall.
</p>
<p>
The program <b>GAMBLERS_RUIN_PLOT</b> displays the "score" for player A
at each step of the game.
</p>
<p>
The program <b>GAMBLERS_RUIN_SIMULATION</b> plays the game a number of times,
and computes statistics of the number of steps and the probability of winning,
as well as histograms of the number of steps and the number of times the
lead was reversed.
</p>
<h3 align = "center">
Usage:
</h3>
<p>
<blockquote>
<b>gamblers_ruin_plot</b> ( <i>a_stakes</i>, <i>b_stakes</i> )
</blockquote>
where
<ul>
<li>
<i>a_stakes</i> and <i>b_stakes</i> are the amounts of money with
which A and B start the game.
</li>
</ul>
plays one game and plots the trajectory.
</p>
<p>
<blockquote>
<b>gamblers_ruin_simulation</b> ( <i>a_stakes</i>, <i>b_stakes</i>, <i>game_num</i> )
</blockquote>
where
<ul>
<li>
<i>a_stakes</i> and <i>b_stakes</i> are the amounts of money with
which A and B start the game.
</li>
<li>
<i>game_num</i> is the number of games to play.
</li>
</ul>
plays the game <i>game_num</i> times, computes statistics, and plots some
histograms.
</p>
<h3 align = "center">
Licensing:
</h3>
<p>
The computer code and data files described and made available on this web page
are distributed under
<a href = "../../txt/gnu_lgpl.txt">the GNU LGPL license.</a>
</p>
<h3 align = "center">
Languages:
</h3>
<p>
<b>GAMBLERS_RUIN_SIMULATION</b> is available in
<a href = "../../m_src/gamblers_ruin_simulation/gamblers_ruin_simulation.html">a MATLAB version.</a>
</p>
<h3 align = "center">
Related Data and Programs:
</h3>
<p>
<a href = "../../m_src/brownian_motion_simulation/brownian_motion_simulation.html">
BROWNIAN_MOTION_SIMULATION</a>,
a MATLAB program which
simulates Brownian motion in an M-dimensional region.
</p>
<p>
<a href = "../../m_src/dice_simulation/dice_simulation.html">
DICE_SIMULATION</a>,
a MATLAB program which
simulates N tosses of M dice, making a histogram of the results.
</p>
<p>
<a href = "../../m_src/duel_simulation/duel_simulation.html">
DUEL_SIMULATION</a>,
a MATLAB program which
simulates N repetitions of a duel between two players, each of
whom has a known firing accuracy.
</p>
<p>
<a href = "../../c_src/forest_fire_simulation/forest_fire_simulation.html">
FOREST_FIRE_SIMULATION</a>,
a C program which
simulates the occurrence of fires and regrowth in a forest,
displaying the results using X Windows,
by Michael Creutz.
</p>
<p>
<a href = "../../m_src/high_card_simulation/high_card_simulation.html">
HIGH_CARD_SIMULATION</a>,
a MATLAB program which
simulates a situation in which you see the cards in a deck one by one,
and must select the one you think is the highest and stop.
</p>
<p>
<a href = "../../m_src/ising_2d_simulation/ising_2d_simulation.html">
ISING_2D_SIMULATION</a>,
a MATLAB program which
carries out a Monte Carlo simulation of an Ising model,
a 2D array of positive and negative charges,
each of which is likely to "flip" to be in agreement with neighbors.
</p>
<p>
<a href = "../../c_src/life_opengl/life_opengl.html">
LIFE_OPENGL</a>,
a C program which
uses OpenGL to display the evolution of John Conway's "Game of Life",
by Simon Green.
</p>
<p>
<a href = "../../m_src/lorenz_simulation/lorenz_simulation.html">
LORENZ_SIMULATION</a>,
a MATLAB program which
solves the Lorenz equations and displays the solution, for various
starting conditions.
</p>
<p>
<a href = "../../f_src/md1/md1.html">
MD1</a>,
a FORTRAN90 program which
carries out a simple molecular dynamics simulation;
</p>
<p>
<a href = "../../f_src/md2/md2.html">
MD2</a>,
a FORTRAN90 program which
carries out a simple molecular dynamics simulation;
</p>
<p>
<a href = "../../f_src/md3/md3.html">
MD3</a>,
a FORTRAN90 program which
carries out a simple molecular dynamics simulation;
</p>
<p>
<a href = "../../f_src/md3glue/md3glue.html">
MD3GLUE</a>,
a FORTRAN90 program which
carries out a simple molecular dynamics simulation;
</p>
<p>
<a href = "../../m_src/poisson_simulation/poisson_simulation.html">
POISSON_SIMULATION</a>,
a MATLAB library which
simulates a Poisson process in which events randomly occur with an
average waiting time of Lambda.
</p>
<p>
<a href = "../../m_src/random_walk_1d_simulation/random_walk_1d_simulation.html">
RANDOM_WALK_1D_SIMULATION</a>,
a MATLAB program which
simulates a random walk in a 1-dimensional region.
</p>
<p>
<a href = "../../m_src/random_walk_2d_avoid_simulation/random_walk_2d_avoid_simulation.html">
RANDOM_WALK_2D_AVOID_SIMULATION</a>,
a MATLAB program which
simulates a self-avoiding random walk in a 2-dimensional region.
</p>
<p>
<a href = "../../m_src/random_walk_2d_simulation/random_walk_2d_simulation.html">
RANDOM_WALK_2D_SIMULATION</a>,
a MATLAB program which
simulates a random walk in a 2-dimensional region.
</p>
<p>
<a href = "../../m_src/random_walk_3d_simulation/random_walk_3d_simulation.html">
RANDOM_WALK_3D_SIMULATION</a>,
a MATLAB program which
simulates a random walk in a 3-dimensional region.
</p>
<p>
<a href = "../../m_src/reactor_simulation/reactor_simulation.html">
REACTOR_SIMULATION</a>,
a MATLAB program which
a simple Monte Carlo simulation of the shielding effect of a slab
of a certain thickness in front of a neutron source. This program was
provided as an example with the book "Numerical Methods and Software."
</p>
<p>
<a href = "../../m_src/sir_simulation/sir_simulation.html">
SIR_SIMULATION</a>,
a MATLAB program which
simulates the spread of a disease through a hospital room of M by N beds,
using the SIR (Susceptible/Infected/Recovered) model.
</p>
<p>
<a href = "../../m_src/snakes_and_ladders/snakes_and_ladders.html">
SNAKES_AND_LADDERS</a>,
MATLAB programs which
simulate the game of Snakes and Ladders.
</p>
<p>
<a href = "../../m_src/traffic_simulation/traffic_simulation.html">
TRAFFIC_SIMULATION</a>,
a MATLAB program which
simulates the cars waiting to get through a traffic light.
</p>
<p>
<a href = "../../m_src/three_body_simulation/three_body_simulation.html">
THREE_BODY_SIMULATION</a>,
a MATLAB program which
simulates the behavior of three planets, constrained to lie in a plane,
and moving under the influence of gravity,
by Walter Gander and Jiri Hrebicek.
</p>
<p>
<a href = "../../m_src/truel_simulation/truel_simulation.html">
TRUEL_SIMULATION</a>,
a MATLAB program which
simulates N repetitions of a duel between three players, each of
whom has a known firing accuracy.
</p>
<p>
<a href = "../../c_src/xising/xising.html">
XISING</a>,
a C program which
models the variations in ferromagnetism in a material, displaying
the results using X Windows.
</p>
<p>
<a href = "../../c_src/xwaves/xwaves.html">
XWAVES</a>,
a C program which
simulates the behavior of solutions of certain forms of the wave equation, displaying
the results using X Windows.
</p>
<h3 align = "center">
Reference:
</h3>
<p>
<ol>
<li>
Martin Gardner,<br>
The Mathematical Circus,<br>
Mathematics Association of America, 1996,<br>
ISBN13: 978-0883855065,<br>
LC: QA95.G287.
</li>
<li>
Ian Stewart,<br>
"Repealing the Law of Averages",<br>
Scientific American,<br>
Volume 278, Number 4, April 1998, pages 102-104.
</li>
</ol>
</p>
<h3 align = "center">
Source Code:
</h3>
<p>
<ul>
<li>
<a href = "gamblers_ruin_simulation.m">gamblers_ruin_simulation.m</a>,
plays the game many times, print some statistics and displays some histograms.
</li>
<li>
<a href = "gamblers_ruin_plot.m">gamblers_ruin_plot.m</a>,
plays the game once, and displays the status of A's winnings.
</li>
</ul>
</p>
<h3 align = "center">
Examples and Tests:
</h3>
<p>
<ul>
<li>
<a href = "flips_70_70_hist.png">flips_70_70_hist.png</a>,
a histogram of the number of times the lead changes when A and B
both start the game with $70. The game was run 1,000 times.
</li>
<li>
<a href = "game_5_7_plot.png">game_5_7_plot.png</a>,
a plot of A's wininings in a single game in which A began with
$5 and B with $7.
</li>
<li>
<a href = "steps_70_70_hist.png">steps_70_70_hist.png</a>,
a histogram of the number of coin tosses required to complete then
game when A and B
both start the game with $70. The game was run 1,000 times.
</li>
</ul>
</p>
<p>
You can go up one level to <a href = "../m_src.html">
the MATLAB source codes</a>.
</p>
<hr>
<i>
Last revised on 07 November 2009.
</i>
<!-- John Burkardt -->
</body>
</html>