Data Analysis / Statistics & Data Science

How to win at gambling – ALWAYS!

I have been playing around with probabilities and stumbled across something here that I don’t really understand, but it seems that I have discovered a sure-fire way to always win at cards! Let me illustrate this with the age old analogy of a coin flip.

Let’s say you have a fair coin, with equal chance of flipping heads or tails. What is the likelihood of getting ten heads in a row? Well that’s easy it is:

10 heads = 0.5 x 0.5 x 0.5 x 0.5 x 0.5 x 0.5 x 0.5 x 0.5 x 0.5 x 0.5

= 0.5 ^ 10

= 0.001

Just to make sure we are right, let’s model this in R:

# fairCoin is a binary distribution that models a fair coin
# i.e. there is a 50:50 chance of a HEAD (1) or a TAIL (0)
fairCoin <- c(0, 1)
p <- c(0.5, 0.5)

experiment <- function (x) {
    # counts how many 'HEADS' (1s) are flipped in 10 flips of a fair coin
    # returns "WINNER" if there are 10 HEADS (1s) in a row
    # otherwise returns "TRY AGAIN"
    coinflip <- sample(fairCoin, 10, replace=T, p)
    nheads <- length( coinflip[coinflip == 1] )
   outcome <- if (nheads == 10) 'WINNER'
                         else 'TRY AGAIN'
    return ( outcome ) 

## now let's run the experiment 1000 times
trials <- c(1:1000) ##i.e. (1 coin flipped 10 times) x 1000

for (t in trials) {
    trials[t] <- experiment(t)


And we see the results are: TRY AGAIN = 999, WINNER = 1. i.e. a 1 in 1000 chance of winning.

But what happens if we flip 1000 coins all at once? It turns out that if we flip 1000 coins, then we have a much better chance of at least one of these coins winning. Again, let’s model this in R. We are going to flip 1000 coins 10 times, and if any one of them turns up all HEADs then we win:

## Now we can't just run this experiment once, so we will run it 1000 times
## For each of these 1000 trials, we will return "Big Roller" if at least
## one of our 1000 coins is a "WINNER"

trials <- c(1:1000) ## i.e. we will flip 1000 coins, 10 times
## and repeat this 100 times over
<pre>for (t in trials) {
    trials[t] <- "TRY AGAIN"
    manyCoins <- c(1:1000) # i.e. 1000 coins
    for (c in manyCoins) {
        if (experiment(c) == "WINNER") {
            trials[t] <- "Big Roller"


And the results: TRY AGAIN = 364, BIG ROLLER = 636

Something really amazing happens here, if we flip a single coin 1000 times we hardly ever win. But if we flip 1000 coins then we end up winning approx. 60 % of the time! This flipped me out for a while – with these odds how can you loose? Based on this, if I sit at 1000 high stakes poker tables I will win approx 60 % of the hands I play… but I will also lose an awful lot of hands along the way. There is something very wrong here and I cannot figure it out!

My intuition is that 1000 coins are totally independent of each other, and we should expect the exact same likelihood of becoming a BIG ROLLER as we do of WINNING with a single coin. Clearly there is something wrong with my intuition, and it is driving me crazy. Hidden in this is a good lesson about analysing data and following your intuition. Intuition can lead to great insight, but it can also lead you down the wrong path which can be very hard to come back from. So beware.

I know there is a perfectly rational explanation for all of this. But right now my brain is in a lockdown. I will leave this until the weekend and if I find the solution, I will update this post.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s