GAMBLERS_RUIN_SIMULATION
Simulation of Gambler's Ruin


GAMBLERS_RUIN_SIMULATION is a MATLAB program which simulates the game of gambler's ruin.

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.

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.

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.

It is known that, if A and B start the game with $A_STAKES and $B_STAKES,

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.

The program GAMBLERS_RUIN_PLOT displays the "score" for player A at each step of the game.

The program GAMBLERS_RUIN_SIMULATION 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.

Usage:

gamblers_ruin_plot ( a_stakes, b_stakes )
where plays one game and plots the trajectory.

gamblers_ruin_simulation ( a_stakes, b_stakes, game_num )
where plays the game game_num times, computes statistics, and plots some histograms.

Licensing:

The computer code and data files described and made available on this web page are distributed under the GNU LGPL license.

Languages:

GAMBLERS_RUIN_SIMULATION is available in a MATLAB version.

Related Data and Programs:

BROWNIAN_MOTION_SIMULATION, a MATLAB program which simulates Brownian motion in an M-dimensional region.

COIN_SIMULATION, a MATLAB library which looks at ways of simulating or visualizing the results of many tosses of a fair or biased coin.

DICE_SIMULATION, a MATLAB program which simulates N tosses of M dice, making a histogram of the results.

DUEL_SIMULATION, a MATLAB program which simulates N repetitions of a duel between two players, each of whom has a known firing accuracy.

FAIR_DICE_SIMULATION, a MATLAB program which simulates N tosses of 2 dice, making a histogram of the results.

HIGH_CARD_SIMULATION, 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.

ISING_2D_SIMULATION, 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.

LIFE_OPENGL, a C program which uses OpenGL to display the evolution of John Conway's "Game of Life", by Simon Green.

LORENZ_SIMULATION, a MATLAB program which solves the Lorenz equations and displays the solution, for various starting conditions.

MD1, a FORTRAN90 program which carries out a simple molecular dynamics simulation;

MD2, a FORTRAN90 program which carries out a simple molecular dynamics simulation;

MD3, a FORTRAN90 program which carries out a simple molecular dynamics simulation;

MD3GLUE, a FORTRAN90 program which carries out a simple molecular dynamics simulation;

POISSON_SIMULATION, a MATLAB library which simulates a Poisson process in which events randomly occur with an average waiting time of Lambda.

RANDOM_WALK_1D_SIMULATION, a MATLAB program which simulates a random walk in a 1-dimensional region.

RANDOM_WALK_2D_AVOID_SIMULATION, a MATLAB program which simulates a self-avoiding random walk in a 2-dimensional region.

RANDOM_WALK_2D_SIMULATION, a MATLAB program which simulates a random walk in a 2-dimensional region.

RANDOM_WALK_3D_SIMULATION, a MATLAB program which simulates a random walk in a 3-dimensional region.

REACTOR_SIMULATION, 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."

ROULETTE_SIMULATION, a MATLAB program which simulates the spinning of a roulette wheel and the evaluation of certain common roulette bets.

SIR_SIMULATION, 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.

SNAKES_AND_LADDERS, MATLAB programs which simulate the game of Snakes and Ladders.

TRAFFIC_SIMULATION, a MATLAB program which simulates the cars waiting to get through a traffic light.

THREE_BODY_SIMULATION, 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.

TRUEL_SIMULATION, a MATLAB program which simulates N repetitions of a duel between three players, each of whom has a known firing accuracy.

XISING, a C program which models the variations in ferromagnetism in a material, displaying the results using X Windows.

XWAVES, a C program which simulates the behavior of solutions of certain forms of the wave equation, displaying the results using X Windows.

Reference:

  1. Martin Gardner,
    The Mathematical Circus,
    Mathematics Association of America, 1996,
    ISBN13: 978-0883855065,
    LC: QA95.G287.
  2. Ian Stewart,
    "Repealing the Law of Averages",
    Scientific American,
    Volume 278, Number 4, April 1998, pages 102-104.

Source Code:

Examples and Tests:

You can go up one level to the MATLAB source codes.


Last revised on 07 November 2009.