The Solution to Darts?

For a shorter, summary version of this page, see:  The Solution to Darts? Summary

See:  A Mathematical Solution to Darts for a detailed description of the algorithms used for Part 1 of this project. 


This is an example of a problem that I did not quit thinking about until it was solved.

When I was a child, my father and I played darts against each other in fantasy dart leagues with fictional teams and players.  Darts also served as my introduction to programming, beginning with Lotus 1-2-3 macros that I wrote to automate record-keeping for these leagues.

As a kid, I always wondered where I should aim my darts to maximize my chances of winning the game.  Over twenty years later, I decided to answer this question.

For Part 1 of this project, I demonstrate a mathematical solution to several target optimization problems of increasing complexity for the game of darts.  For Part 2, I tracked over 30,000 of my dart throws to test and adapt the mathematical solution for an actual human darts player.

The mathematical solution for Part 1 is dependent on a model of a player’s dart throwing.  A bivariate normal distribution (the bell curve with two variables, for a dart’s x and y coordinates) can be used for this model, which is also a reasonable approximation of a human’s dart throwing:

A model of a theoretical dart player’s throwing while aiming at the bullseye, based on a bivariate normal distribution with an x and y standard deviation of 17 mm. The legend shows that an individual throw has about a 50% chance of landing at any specific point in the red ring compared to the center of the bullseye.

The following image shows 5000 simulated dart throws using the above model: 

5000 simulated dart throws using Pigfoote’s model when aiming at the bullseye.

While my work applies to any model, in Part 1, I use Pigfoote’s as an example to answer the following questions of increasing difficulty: 

  1. Where should Pigfoote aim to maximize his expected score?
  2. For the simple “Hi-Score” variant of darts (the variant I played with my father), based on the situation (score/turn/throw), where should Pigfoote aim to maximize his expected winning percentage? 
  3. For the “501” variant played in competitive darts today, based on the situation, where should Pigfoote aim to minimize his expected turns?  
    1. Alternately, where should Pigfoote aim if he wants to maximize his chances to “go out” on his current turn? 
  4. For the “501” variant, how can Pigfoote build a complete strategy that takes his opponent’s score, skill, and strategy into account and maximizes his expected winning percentage?  

Pigfoote’s Optimal Scoring Target

Starting with the simplest target optimization problem of maximizing expected score, Pigfoote’s model can be used to predict his expected score while aiming at each target on the dartboard.  We can then sweep the dartboard to produce a “heatmap” that shows the player’s relative scoring average while aiming at every target on the dartboard: 

The heatmap shows that Pigfoote’s optimal scoring target lies within the triple 19, where he should average about 19.74 points per throw.

Maximizing Win Expectancy – Hi-Score Variant

In the “Hi-Score” variant of darts, players alternate three throw turns, and the player who scores the most points wins.  The key to finding the target that maximizes win percentage, as opposed to score, is to map every score on the dartboard to a winning percentage.  I began with the last throw of the game, as depending on the score of the game, each score on the dartboard can be translated to a win (100% wpct), a tie (50%) or a loss (0%) for the current player.  I also used a dartboard with different dimensions: the electronic dartboard my father bought, which has larger triple and double rings.  

For example, the following image illustrates how these scores are mapped when the current player is trailing by 10 points:

Trailing by 10 points before the last throw of the game, the current player will win the game if the final dart lands in the white zones, lose the game if it lands in the black zones, and tie the game if it lands in the gray zones (a single 10 or a double 5). The x shows Pigfoote’s optimal target, which is on the border of the 11 and 14 because these are the only two adjacent scores on the dartboard that would both win the game.

The following table shows Pigfoote’s optimal target and chances to win on the last throw of the game when trailing by 7 to 26 points (target notation explained in Part 1): 

The table shows that with 1 throw remaining in a game of Hi-Score Darts, Pigfoote’s win expectancy is nearly 100% when trailing by 10 or fewer points. His win expectancy then drops to 84.3% for a deficit of 11, and then to 78.2% for a deficit of 12. It remains relatively stable until dropping to 41.8% for a deficit of 20, when hitting his optimal target of the single 20 will only tie the game.

The following image shows the locations for the 5 targets within the 14 with dots next to them in the table above:

Pigfoote’s optimal targets when behind by 8 to 13 points for the final throw of a Hi-Score darts game.

The dots show that when trailing by 8 to 13 points before the final throw of the game, Pigfoote should always aim within the 14, but the specific location varies for each score.

  • Trailing by 10 points, he should aim at the blue dot between 14 and the 11, since both scores win the game.  Pigfoote should win 97.5% of the time if he aims at this target. 
  • Trailing by 11 points, he should aim at the cyan dot, within the 14 but closer to the 11, which ties the game, than the 9 (above the 14), which loses the game.  Pigfoote has an 84.29% chance to win
  • Trailing by 12 or 13, he should aim at the green dot almost directly in the center of the 14.  Pigfoote has a 78.2% chance to win

For Part 1, I used the complete version of the above table for the final throw of the game to create a table for the 2nd to last throw of the game.  For example, trailing by 30 points, a single 20 reduces Pigfoote’s deficit to 10 points and from the table above is mapped to a 97.5% win expectancy.  This 2nd table is then used to create a table for the 3rd to last throw of the game, and so on all the way to the first throw of the game (though beyond the 3rd to last throw, this requires also requires a model of Pigfoote’s opponents dart throwing). 

Competitive Darts, 501 Variant

In the 501 variant played in competitive darts today, the goal of the game is to reduce your score to exactly 0, but the final throw of the game must land on a double. A throw that reduces a player’s score below zero, to exactly one, or to zero but not ending with a double or bullseye is known as “going bust”, with the player’s score being reset to the value before starting the turn, and the remainder of the turn being forfeited.

When choosing a target for this variant of darts, a better goal than maximizing a player’s expected score is to minimize a player’s expected turns to reach a score of 0 (called going “out”).  Thus, I began by finding where Pigfoote should aim to minimize his expected turns, beginning with the lowest non-zero score possible of 2 points.  

The image below shows Pigfoote’s optimal target with a score of 2 points for his first (red), second (green), and third (blue) throw of his turn.  Because the bust rule means that scoring 1 point forfeits the rest of his turn, Pigfoote should actually aim to miss the scoring area of the dartboard for his 1st and 2nd throws of his turn. 

Pigfoote’s optimal target with a score of 2 points for his first (red), second (green), and third (blue) throw of his turn

I then used the solution for a score of 2 points to find the optimal targets for a score of 3 points, and then used both solutions to find targets for a score of 4 points, and so on until the maximum score of 501 points.  The following shows Pigfoote’s turn minimization table with a score of 2 to 8 points:

The turns column shows that although the goal of a 501 darts game is to reach a score of zero, because of the double out rule, a lower score is not always better.  The Out column shows Pigfoote’s chances of going out on his turn.  

Note that minimizing expected turns is not the same as maximizing win percentage.  For example, against a highly skilled darts player who is likely to go out his next turn, Pigfoote should care more about the “Out” column than the “Turns” column in the above table, with targets adjusted accordingly.  In Part 1 of my analysis I demonstrate how Pigfoote can build a complete win maximization strategy that takes his opponent’s score, skill, and strategy into account, along with a few examples for specific situations.  A table showing every scenario would have 3*500*500 = 750,000 entries using a simplified bust rule, and 6.6 million situations using the start of turn bust rule.   See:  A Mathematical Solution to Darts for details about calculating these strategies. 

Adapting the Mathematical Solution to a Human Darts Player

While Part 1 effectively solves the game of darts for a computer simulation, my goal was to solve it for a human being, whose dart throwing is unlikely to be accurately represented by a single model that looks like a perfect circle.  

For Part 2 of my analysis, my original plan was to build a statistical model of my dart throwing that could be substituted for the formulas used to simulate dart throws for Part 1.  To begin, I recorded 3,000 of my dart throws while aiming at each of four targets.  The following image represents the location of all 12,000 of these dart throws: 

The location of 12,000 of my dart throws while aiming at the triple 20 (blue), triple 19 (green), triple 14 (black) and bullseye (red). Notice how the red dots are less spread out than the others.

I then used these throws to create the following models of my dart throwing while aiming at each of these targets: 

Models of my dart throwing computed from the above dart throws. Notice how the bottom right model is the smallest and most circular, demonstrating that I was more accurate when aiming at the bullseye compared to the other targets.

Note that when aiming at the bullseye, my PDF has a much smaller radius, and is more circular, demonstrating that I threw significantly more accurately compared to the other targets. 

My work for part 1 depends on using a single PDF to represent a player’s dart throwing regardless of the target.  The above PDFs are definitely not the same in size or shape, indicating that the solution from Part 1 is not complete for an actual human darts player.  

Based on this, I wanted to see if I could predict the size/shape of my PDF based on the location of my target.  To test this, I threw 600 darts while aiming at each of the 20 triple segments around the dartboard.  The following visualization represents the 6,866 of these 12,000 throws that landed in the same number segment as the triple that I was aiming at: 

Visualization of my dart throwing while aiming at each of the 20 triples. Example: when aiming at the triple 20 at the top of the dartboard, about 0.2% of my throws hit the double 20, 25.3% hit the outer single 20, 10.5% hit the triple 20, and 15.7% hit the inner single 20. The other 48.3% of my throws landed outside of the 20.

Ultimately, after tracking over 30,000 of my dart throws, I concluded that my dart throwing is not predictable enough to apply the solution from Part 1, especially given that I can’t aim my darts to the precision that the solution requires. 

A Dart Trainer

I stopped throwing darts once I understood that although I could build a statistical model of my dart throwing, it wouldn’t improve my game much.  

Remembering that I throw better when aiming at the bullseye, I did have an insight that could make me a better darts player.  Because a human doesn’t aim at every point in the dartboard like a computer program, I had an idea for a pair of dartboard targeting goggles.

A fictional pair of dartboard goggles, a way to adapt the mathematical solution to darts for a human. 

These goggles would recognize the dartboard and overlay a visually optimized, possibly circular target based on the situation of the game and a (now useful) statistical model of my dart throwing. These goggles would allow me to aim at the precise points on the dartboard that the mathematical solution recommends. More importantly, by optimizing the shape of the visual target, these goggles could improve the accuracy of my dart throwing and could be adapted to improve my targeting and accuracy for other aim and throw or shoot activities.

These targeting goggles could be optimized for other projectile sports such as archery, baseball, or firearms target shooting.  A second generation of this software could improve aim for moving targets, whose shape changes from the perspective of the viewer, for activities like game hunting, or for military combat.  Alternatively, the software could display targeting solutions predictive of where there will be holes in the defense, useful for the games of tennis, football, and soccer.  Each solution could use the same goggles with software specific to that application.  

Even without any additional software, a device that simply created a visual target, shaped like a bullseye, at a user-specified location, could dramatically improve one’s accuracy for a wide range of activities. 

Conclusion

In the end, it took me over 30,000 dart throws to finally realize that this silly idea I had for “dartboard goggles” after just 500 throws is actually a far better solution to darts for a human than any amount of statistical modeling could be on its own.  But the solution really came from something I suspected as a kid playing darts with my father:  that a human doesn’t see the dartboard the same way that a computer program does.  And for a human, the solution to darts is to see the dartboard more like a computer program.

Links to related work:

A Statistician Plays Darts

A geek plays darts

Optimal Strategies for the Game of Darts

My original, unedited work is also available in PDF format, in two parts: 

Part 1 – A Program Plays Darts.  Note:  I’ll leave this link for anyone interested, even though the page A Mathematical Solution to Darts is a complete rewrite meant to replace it.  

Part 2 – A Programmer Actually Plays Darts.  Rewrite in progress.