Please enable JavaScript to view the comments powered by Disqus.

Winning Strategy for two-player Coup

This is not a how-to-play guide. This is a how-to-win guide.

Five cards are dealt to both my opponent and I.

Game starts.

Now, let's define some notations for convenience:

A, B, C, D, E denotes any random character in Coup
i_have(nX) denotes the event that I was dealt n number of X cards, where X ∈ {A, B, C, D, E}. If undefined, n == 1
u_have(nX) denotes the event that my opponent was dealt n number of X cards, where X ∈ {A, B, C, D, E}. If undefined, n == 1
P(Y) denotes the probability of some event
C(Y) denotes the combination of some event
nCr denotes the number of combination of n pick r

The winning formula is simple:

  1. Guess what cards your opponent have
  2. Guess what cards your opponent pick
  3. Prepare bluffs
  4. Play

1. Guess what cards your opponent have

There are 2 signals:

  1. The cards you are dealt with tells you what cards your opponent might have
  2. How long your opponent spend on card-picking tells you how much choice or even the choices they have
Given i_have(0A), 
    P(u_have(>=1A))
        = 1 - C(u_have(0A)) / C(any)
        = 1 - 7C5 / 10C5
        = 0.92
    P(u_have(2A))
        = C(u_have(2A)) / C(any)
        = 3C2 * 7C3 / 10C5
        = 0.42
    P(u_have(3A))
        = C(u_have(3A)) / C(any)
        = 7C2 / 10C5
        = 0.08
Given i_have(1A),
    P(u_have(>=1A))
        = 1 - C(u_have(0A)) / C(any)
        = 1 - 8C5 / 10C5
        = 0.78
    P(u_have(1A))
        = C(u_have(1A)) / C(any)
        = 8C4 * 2C1 / 10C5
        = 0.56
    P(u_have(2A))
        = C(u_have(2A)) / C(any)
        = 8C3 / 10C5
        = 0.22
Given i_have(2A),
    P(u_have(1A))
        = C(u_have(1A)) / C(any)
        = 9C4 / 10C5
        = 0.5
        which makes sense because your opponent can pick any 1 of the 2 piles containing A

Possible card dealts to you and what they mean:

- i_have(ABCDE)
   - assume opponent has all different
- i_have(2A0BCDE)
    - assume opponent has all different
- i_have(2A2BC0D0E)
    - assume opponent has CDE and either of A or B.
- i_have(3ABC0D0E)
    - assume opponent has DE and either of B or C

Implications:

I can further guess what cards were dealt to my opponent by the time spent on picking their cards. This is highly subjective, but we need to take into account whose turn it is to make the first move, and what cards the opponent might have. Usually, the more time they spend, the more choices they have. It could also mean that they have bad cards.

Always be the last to pick cards unless I want to throw off my opponent.

2. Guess what cards your opponent pick

This is very subjective, but it gets easier and easier to guess as you play more and learn more about how your opponent plays. If they were dealt >=2 of Duke, do they usually not pick Duke and bluff their way?

Depending on who's the first to move:

3. Prepare to bluff

4. Play

Meta-strategy

Remember how your opponent plays:

Their strategy changes too. When keep getting called on bluffs, they might begin playing honestly.