duel_simulation, a Python code which simulates N instances of a duel between two players.

Player 1 fires at player 2, and hits with a probability of P(1). If Player 1 misses, then Player 2 fires at Player 1, hitting with a probability of P(2).

The duel continues with alternating shots until only one player survives.

The simulation is intended to estimate the probabilities that a player will survive, and the number of turns required.

The exact probability that player 1 will survive is

P(1) / ( P(1) + P(2) - P(1) * P(2) )
while player 2's chance is
P(2) * ( 1 - P(1) ) / ( P(1) + P(2) - P(1) * P(2) ).


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


duel_simulation is available in a C version and a C++ version and a FORTRAN90 version and a MATLAB version and a Python version.

Related Data and Programs:

brownian_motion_simulation, a Python code which simulates Brownian motion in an M-dimensional region.

snakes_and_ladders, a Python code which simulates the game of Snakes and Ladders.


  1. Paul Nahin,
    Duelling Idiots and Other Probability Puzzlers,
    Princeton University Press, 2000,
    ISBN13: 978-0691009797,
    LC: QA273.N29.
  2. Martin Shubik,
    "Does the Fittest Necessarily Survive?",
    in Readings in Game Theory and Political Behavior,
    edited by Martin Shubik,
    Doubleday, 1954,
    LC: H61.S53.

Source Code:

Last revised on 16 August 2017.