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 MIT license


duel_simulation is available in a C version and a C++ version and a Fortran90 version and a MATLAB version and an Octave version and a Python version.

Related Data and Programs:

python_simulation, a Python code which uses simulation to study card games, contests, and other processes which have a random element. Usually, the purpose is to try to predict the average behavior of the system over many trials.


  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.