Boardgames & Math – Liar’s Dice


For tonight’s Innovation Session I’m going to make a Liar’s dice cheat sheet. This will hopefully be a simple and beautiful way to remember what the odds of a certain bet are at any point in the game – even if it’s been a long night.

Liar’s dice is a simple game. Each player starts with five dice, everyone rolls and you take turns guessing the combined dice of everyone, even though you can only see your five. The bidding has to increase so eventually someone gets called a liar and everyone shows. Either the liar or the person that called them one loses and must discard a die. The game then repeats, now with one less die. See the full rules here.

Most of the game revolves around bluffing, second guessing and such. But, at the end of the round, someone has to be right and that is always determined by pure probability.

I play the version where ones are wild. Actually, in my version skulls are wild because I use the branded Pirates of the Caribbean version called Pirate’s Dice.


The math to Liar’s dice is simple. The probability of any die being a certain number is 1/6. With ones wild that increases to 1/3. You of course can see your dice so you can subtract those from the numerator and denominator then see if the rest of the math works out.

Making a Cheat Sheet

The first step will be to create a basic grid of the possible scenarios. The game starts with 20 dice and one is removed each turn until there is only one player remaining. That is mapped on the Y axis. Any player starts with 5 dice but could lose them throughout the game. That is mapped on the X axis.

So we have a basic grid.


But if there is only one die remaining and you have one die in your hand you’ve won – so we don’t really need that square or a few others like it. So we update the grid to look like this.


The next thing I was planning on doing was putting a grid within each of these grid boxes that showed all of the quantities someone could call and showed you the probability of there being at least that many of said numbed. It would of course have to break it down by how many of that number you had in your hand. So each cell in the above table would have to be filled with something that looked like this.


Then on each turn you could look up how man dice were in play, how many you had, what the call was and how many of those you had to figure out the exact probability that the call would occur.

It is comprehensive, but it is basically a nightmare in terms of usability.

Cleaning Things Up

Now that we’ve built a template, we can begin to remove items to clean it up.

The first thing I don’t think we’ll need is the exact % value of every possible outcome. We don’t really care if there is a 33% vs 42% chance of that amount of die being on the board. We only care once the number flips over 50% because that is when we will betting on the improbable. Though that is sometimes ok, we want to know when we flip.

So we can tweak the example above by removing the numbers and just putting in a red or green square if the number is above or below 50%.


At this point we really don’t need that much of the shown information – we only need to see the point where the odds flip. So we can simplify this grid by showing only the limit – the largest quantity that there is a >50% chance of occurrence based on the current state.


Now we have an amount of information that we might actually be able to fit into a single cell on the original table.

We can actually reduce it once more by eliminating the header row and label. We know the only value will the limit, so we don’t need to keep seeing that. The header is also unnecessary because we will always be incrementing by one, starting at zero. So each cell really only needs to contain this.


And in fact, many will contain less, because when you only have one dice in your hand, you will only needs the limits for if you have zero or one of the value in question.

So our complete table looks like this.


Well, that is the format at least. With numbers it would look like.


You’ll notice a few of the bottom rows disappeared. I actually hadn’t thought about that until I was doing the math to fill in the cells. There can’t be a case where the pool has 20 die but you have only one because your loss takes away from the pool as well.

I’m at my time limit for tonight, so there we have it – a usable Liar’s dice cheat sheet.

Update: Innovation Session Goals

A few weeks ago I wrote about my Innovation Sessions and listed three benefits/goals:

  1. train my innovation skills by introducing my mind to new and diverse problems, racking my brain for solutions and to exposing the resulting solutions to public criticism.
  2. explore ideas I have for products, visualizations or tools
  3. learn new skills and hone others that I do not use as regularly in my day job

I forgot a fourth one which in many ways outweighs the other three: meeting cool people.

Over the past month I have had lunch, coffee, beers or gone surfing with about a half dozen cool people that I met because of my Innovation Sessions. They shared a common interest, saw an idea of mine posted and were kind enough to reach out.

Because of those meetings, some of the ideas might turn into realities. Even when they don’t, which will most often be the case, sharing ideas & encouraging like-minded people is a super rewarding experience. We grow when our ideas are vetted by others and we work to see things from their perspective. We won’t always apply all of it, but often we can take something away. Everyone has a unique perspective and will offer a new twist that you might not have thought of – that is why team collaboration is so cool.

To those of you that reached out to say hi – thanks & I’m looking forward to more drinks, meals & surfing. To everyone else – share your ideas and meet people that believe in the same change you do – you can do more together!

Innovation Session: The Most Normal State – Part 2

In January I described a project idea for finding out which state is the most normal. Tonight I will pick up where I left off.

Data Collection

I am going to start by gathering data for each of the 50 states in a CSV – I also posted it as a google doc if you want to follow along. Eventually I suspect I will have to translate this into JSON before loading it into the visualization – but this is an easy way to get started.

The first place I am going to try to get data is the US Census. Thankfully they have an API that I can use to get some population & demographic facts:

Unfortunately, the existance of an API is the only thing to get excited about. I got nowhere tonight. The US Census API is horrible to work with. I could be blind, but it took me an hour of looking to finally find a list of they API keys on another website.

Update: I never pursued this project any more – this is the end of the road for now…