A Mathematical Solution to Darts

Revised 1/19/23

This is Part 1 of my project, The Solution to Darts, where 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.  

I have divided this work into the following sections:

Intro – The Dartboard

The following illustration of a regulation dartboard demonstrates how many points are awarded depending on where a dart lands:

A regulation dartboard with the scoring explained.

Note that the highest score on the dartboard is the triple 20, worth 60 points.  Thus, sufficiently accurate throwers (e.g., professional darts players) should aim at the T20 to maximize their expected score.  However, the T20 is not a forgiving target because the 20 is between two of the lowest scores on the dartboard, the 5 and the 1.

Section A – Modeling a Player’s Dart Throwing

Optimizing targets for the game of darts is dependent on a model of a player’s dart throwing.  For this model, a bivariate normal distribution can be used, which is the bell curve with two variables for a dart’s x and y coordinates.  It is also a reasonable approximation of a human’s dart throwing.  

The following image shows one of these models for a fictional player named Pigfoote while aiming at the bullseye.  

A model of Pigfoote’s dart 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 this model:

5000 simulated dart throws using Pigfoote’s probabilistic density function when aiming at the bullseye.

Using this model and translating the dartboard into a discrete grid of cells, say 1 mm squares, we can predict Pigfoote’s expected score while aiming at every target on the dartboard.  

Aiming at the center of the board, Pigfoote should average about 17.4 points per throw.  He has about a 29% chance of hitting the single bullseye compared to just a 6.7% chance of hitting the double bullseye, though he has about a 25% greater chance of hitting any specific point within the double bull.  

Adaptations to the Bivariate Normal Distribution

The above model is based on a bivariate normal distribution where the dart player’s σ is the same for both variables.  Most darts players are likely to be more or less accurate horizontally compared to vertically.  A player’s throwing model can account for separate vertical and horizontal σ’s as well as other modifications to the bivariate normal distribution, such as a skew or tilt.  The following image shows a model for another fictional player named Duck while aiming at the bullseye. 

Duck’s throwing has a horizontal σ of 15mm, a vertical σ of 20 mm, and a 20% tilt from the lower left to the upper right.  Compared to Pigfoote, Duck is slightly less accurate when aiming at the bullseye, hitting the single or double bull 34.4% of the time compared to Pigfoote’s 35.8%.  However, his improved horizontal accuracy makes him a better scorer while aiming at the triple 20 because he is less likely to miss to the 1 or the 5. 

Section B – Finding the Optimal Scoring Target

A model of a player’s dart throwing can be used to calculate that player’s expected scoring average while aiming at any point on the dartboard.  Thus we can find Pigfoote’s optimal scoring target by sweeping the dartboard and calculating his expected scoring average while aiming at every possible target.  

Pigfoote’s Heatmap and Optimal Scoring Target

I used Pigfoote’s model to generate the following heatmap, which shows Pigfoote’s relative scoring average while aiming at each point on the dartboard.  The blue “x” shows Pigfoote’s optimal scoring target, which lies within the triple 19.

Pigfoote should average 19.74 points per throw when aiming at his optimal scoring target.  His σ of 17mm is just above the threshold where the optimal target switches from the triple 20 to the triple 19.  Further increases in σ cause the target to curl around the lower left region of the board until ending up just inside the inner bullseye for incredibly large values of σ, where merely hitting any score on the dartboard is a success:

This shows the changes to the optimal scoring target for a darts player whose throwing is represented by a bivariate normal distribution with identical vertical and horizontal σ’s. The optimal target starts within the triple 20 for low σ’s and then jumps to the triple 19 at an σ of 16.4 mm.

Duck’s Heatmap and Optimal Scoring Target

I used Duck’s model to generate the following heatmap:

Duck’s optimal scoring target is just above the triple 20, where he should average 20.26 points per throw.  This is over 0.52 points better than Pigfoote’s 19.74 average, even though Pigfoote is more accurate when aiming at the bullseye.  Swapping Duck’s horizontal and vertical accuracy would move his optimal target to the triple 19 and drop his optimal scoring average to 19.02 points per throw. 

Note that maximizing expected score is not the same as maximizing win expectancy, even for the simple Hi-Score variant of darts where the player who scores the most points wins the game.  

Intro to Maximizing Win Percentage

The key to finding the target that maximizes win percentage, as opposed to score, is to map every score on the dartboard to a win percentage.  Calculating this win percentage depends on the rules of the game, and in most situations requires a model and strategy for the opposing darts player.  Assuming perfect information, a complete win maximization strategy for the simple Hi-Score variant of darts can be built by mapping the scores to win percentages and then sweeping the dartboard for each of about 5000 situations.  An optimal strategy for the more complex 501 variant played in today’s competitive darts requires millions of times the calculations as maximizing score.

Target Notation Explained

The following sections include tables of optimal targets described using the following notation.  

OS – 20: H: 0.50 V: 0.69

This target is in the Outer Single sector of the 20, shown by the blue dot in the following image:

Each number slice is divided into 7 sectors – from the center of the dartboard to the out of play area: double bull (DB), single bull (SB), inner single (IS), triple (T), outer single (OS), double (D), miss/out of play (M).

H measures the horizontal position of the target within the sector moving clockwise – an H of 0 shares the border with the adjacent number counter clockwise to the target (e.g., for 14 this is 11), and an H of 1 shares a border with the adjacent number clockwise to the target (e.g. for 14 this is 9).

V measures how far out from the center the point is relative to the sector. A V of 0 shares a

border with the neighboring sector closer to the bullseye, and a V of 1 shares a border with the

neighboring sector further away from the bullseye.

Section C – 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.  

Because this was the variant that my father and I played in our fantasy dart leagues, I decided to calculate the optimal targets using a non-regulation dartboard: the electronic dartboard my father bought and that I also used to track my dart throws for Part 2 of this project.  Compared to a regulation dartboard, this dartboard makes it easier to get high scores due to its roughly 50% larger double and triple rings and a double bullseye nearly twice the size. 

To build an optimal strategy that maximizes win expectancy for all situations, I started with the last throw of the game.  With only 1 throw remaining, each score on the dartboard can be mapped to a value of 1 if it wins the game, 0.5 if it ties the game, or 0 if it loses the game. The outcome of the game is already determined if the current is already ahead, or is trailing by more than 60 points, leaving 61 relevant situations to optimize targets, covering a deficit of 0 to 60 points.  

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 single scores that would both win the game.

After mapping the scores to win percentages, we can then use a dart player’s model to calculate their expected win percentage while aiming at every target on the dartboard.  For each relevant score difference, we can map the scores to win percentages, and then sweep the dartboard to find the target that maximizes win expectancy.  

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:

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. 

After computing the optimal targets for the final throw of the game, the scores can be mapped to win percentages for the 2nd to last throw of the game.  For example, the following image shows illustrates how Pigfoote’s scores are mapped and shows his optimal target when he is trailing by 34 points with two throws to win the game:

Notice how the single scores are divided into roughly 3 shades of gray: scores 15-20 are the lightest shade, 10-14 are the medium shade, and 1-9 are the darkest shade. The optimal target is within the 15, the only light shade number that isn’t between two dark shade numbers. 

The x shows Pigfoote’s optimal target when trailing by 34 points with 2 throws to win the game.  Scoring 15 points would reduce his deficit to 19, giving him a 76.7% chance to win by aiming at the single 20.  He should aim closer to the 10 than the 2, because a score of 10 gives him a 35.5% to win by aiming at the double bullseye, more than double his 17.6% win expectancy if he scores 2 points.  Pigfoote’s optimal strategy gives him a 66.6% chance of winning the game in this situation.

For the 2nd to last throw of the game, the number of relevant situations expands from 61 to 121, covering a deficit of 0 to 120 points, because the current player can score up to 120 points in two throws.  After calculating these optimal strategies, the corresponding win percentages for the 2nd to last throw of the game can then be used to map the scores for the 3rd to last throw of the game. Since the 4th to last throw is taken by a different player, a model and strategy for Pigfoote’s opponent is required to continue the process.  Assuming we have this, the process can continue all the way to the first throw of the game.  In total, there are about 5000 relevant situations to calculate optimal targets for a three turn game of Hi-Score Darts. 

Second Player Advantage

In the Hi-Score variant of darts, the second player has a significant advantage because on their final turn, they know exactly what they need to score to win the game.  This advantage decreases as the number of turns in the game increases.  For example, if Pigfoote is playing an identical twin and both are following the optimal strategy, the second player has a 59.4% win expectancy for a 1-turn game, a 55.6% win expectancy for a 2-turn game, and a 54.3% win expectancy for a 3-turn game. 

Intro to Competitive Darts, 501 Variant

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.  An alternate version of the bust rule returns the score to the value before the throw that went bust.  I will refer to the bust rule used in competitive darts as the “start of turn” or “ST” bust rule and the alternate bust rule as the “current score” or “CS” bust rule.

Score/Throw Shorthand

Situations for this variant are based on Pigfoote’s current score and whether it’s his 1st, 2nd or 3rd throw of a turn.  To save space, I abbreviate these SxTy, where x is his score, and T is the throw number.  Eg., S3T3 refers to a score of 3 before the 3rd throw of a turn.  TN is relative to the current situation and refers to the player’s next throw.  

Section D – Minimizing Expected Turns, 501 Variant, Current Score Bust Rule

When choosing a target for this variant of darts, a reasonable strategy that is independent of the opposing darts player 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 possible score of 2 points.  I also started with the current score bust rule, which is simpler because we don’t have to consider Pigfoote’s score at the start of his turn.  Using this bust rule, the only score that matters is his current score. 

Solving for a Score of 2

With a score of 2 and using the current score bust rule, Pigfoote’s score will remain 2 until he hits a double 1 and wins the game.  Thus, a strategy that maximizes Pigfoote’s chances of going out on his turn will also minimize his expected turns.  

Starting with the final throw of his turn (S2T3), unsurprisingly, Pigfoote should maximize his chances of going out on that throw by aiming at the center of the double 1.  He has a 16.3% chance of hitting his target and winning the game.  For S2T2, the equation changes because there are now three outcomes:

  1. Pigfoote hits a double 1 and wins the game.  
  2. Pigfoote goes bust by hitting any non-zero score besides a double 1.  He forfeits the rest of his turn, and will start his next turn (if he gets one) with a score of 2. 
  3. Pigfoote’s throw is outside the double ring (a “miss”) and scores 0 points.  He will get one more throw this turn. 

To find his optimal target for S2T2, I mapped the double 1 to a value of 1, the other non-zero scores to a value of 0, and the area outside of the double ring to a value of 0.163 – his chances of hitting the double 1 on the final throw of his turn.  His optimal target is slightly outside the double 1, because missing outside of the double won’t forfeit the last throw of his turn.  His optimal strategy gives him a 24.4% chance of going out on his turn.  I repeated the process for S2T1, except that a score of 0 is now mapped to 0.244 instead of 0.163.  This moves his optimal target further outside the double 1, giving him a 29.6% chance of going out on his turn.  

The image below shows Pigfoote’s optimal targets with a score of 2:

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

Calculating Expected Turns for a Score of 2

For scores above 2, Pigfoote’s turn minimization strategy is not necessarily the same as the strategy that maximizes his chances of going out on that turn.  Another variable is introduced – his score at the end of his turn if he doesn’t go out.

Similar to maximizing win expectancy, the key to building a turn minimization strategy is to map each score on the dartboard to an expected number of turns to go out. 

To continue building Pigfoote’s turn minimization table for higher scores requires his expected turns for a score of 2.  For S2T1, this is simply 1 divided the chances of him going out on that turn – 1/0.296 = 3.38 turns.  For S2T2, the equation is: 

(1*0.244) + (1+3.38)*(1-0.244) = 3.55 turns.

The formula is based on Pigfoote’s 24.4% chance of going out in 1 turn, and 75.6% chance of averaging 3.38 additional turns to go out.  Using the same equation but substituting 0.163 for 0.244 for S2T3, Pigfoote should average 3.83 turns to go out in this situation.

Solving for a Score of 3

With a score of 3, Pigfoote needs to hit a single 1 to give him a chance to go out by hitting the double 1.  A single one is mapped to the expected turns to go out with a score of 2 starting with his next throw, and adding 1 if the current throw is last of his turn.  This is 3.55 (S2T2), 3.83 (S2T3), and 4.38 (S2T1 + 1) turns for his first, second and third throws of a turn.  

For S3T3, anything except the single 1 has the same result:  Pigfoote will begin his next turn with a score of 3 (S3T1).  The problem is that we haven’t yet determined Pigfoote’s expected turns for S3T1.  To get around this problem, I started out by taking an educated guess at his expected turns for S3T1 to approximate his optimal target and expected turns for S3T3 and S3T2.  

For S3T2, a single one is mapped to 3.83 expected turns.  Any other non-zero score will forfeit the rest of the turn, and is therefore initially mapped to the guesstimate for S3T1.  A score of zero is mapped to the approximation for S3T3.  A similar mapping is used to approximate the optimal target and expected turns for S3T3, substituting 3.55 for the single one, and using the approximation for S3T2 for scores of zero.

Calculating his approximate optimal target for S3T3 results in a more accurate estimate for S3T3 than the initial guesstimate.  Thus, I went back to S3T1 and recalculated Pigfoote’s optimal target and expected turns, substituting the improved estimate for S3T3.  Then I recalculated S3T2 and S3T3 to arrive at an even better estimate.  

This estimate/refine loop is used in other situations when a score needs to be mapped to a value that is unknown.  It is repeated until the optimal targets are unchanged, which generally takes 2 to 4 iterations depending on the discrete size of the cells.  The estimated values will continue to change for each iteration by half as much as they did for the previous iteration.  Thus, once the targets stop changing, a near-exact value for expected turns can be calculated by doubling the difference from the previous iteration, because the sum of (½ + ¼ + ⅛ + 1/16… etc) is 1.  E.g, if the expected turns are 3.5878 for the 2nd to last iteration and 3.5866 for the last iteration, we can assume that additional iterations would eventually reduce the expected turns to about (3.5866) + (3.5866-3.5878) = 3.5854 turns.  A final iteration can be run to verify using the updated values to verify that the targets and values are stable.

The following image shows Pigfoote’s optimal targets for S3T3 (blue), S3T2 (green) and S3T1 (red):

 

Like S2T3 to S2T2 and S2T1, the target moves towards the outside of the board (albeit very slightly) from S3T3 to S3T2 and S3T1 because a score of zero doesn’t forfeit the rest of his turn.   Following his turn minimization strategy, his expected turns are 4.54 for S3T3, 4.14 for S3T2, and 3.93 for S3T1.  

Solving for Scores of 4 and Above

To calculate optimal targets for S4, the double 2 is mapped to a value of 1 turn, a single 1 is mapped to S3TN, the double 1 and single 2 are mapped to S2TN, a zero is mapped to S4TN and a bust is initially mapped to the guesstimate for S4T3 + 1 turn.  The process continues for a score of 5, then 6, and so on, all the way to the starting score of 501.  

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 the chances of Pigfoote going out on his turn following his turn minimization strategy.

Pigfoote’s expected turns are lower for a score of 4 than a score of 2 or 3 because he can go out by hitting a double 2, and a single 2 gives him a score of 2 and a chance to go out on his next throw.  A score of 8 is even better than 4, because a single 4 leaves him with a score of 4, which is better than a score of 2.  Likewise, a score of 16 is better than 8, and a score of 32 is better than 16 and Pigfoote’s most desirable score.  

Using the current score bust rule for a game of 501 darts, Pigfoote’s complete turn minimization is 500 possible scores times 3 throws in a turn = 1500 records.  Following this strategy, Pigfoote should average 10.89 turns (S501T1) to go out in this variant of darts

Section E – Minimizing Expected Turns, 501 Variant, Start of Turn Bust Rule

According to this rule, when a player goes bust their score is returned to the value at the start of the turn.  Unlike the current score bust rule, a player’s score can go up, and when a bust is possible, the score at the start of the turn can impact the optimal strategy.  

Accounting for all the possible situations that a player can go bust and the possible scores at the start of the turn, this adds 11820 situations to the 1500 score/throw situations using the current score bust rule.  These situations are abbreviated SxTyBz, where x is the current score, y is the throw number, and z is the score at the start of the turn.  E.g, S3T3B8 refers to a score of 3 before the 3rd throw of a turn that started with a score of 8. 

As with the current score bust rule, the complete turn minimization strategy is built by starting at the lowest scores and working our way up.  Unlike the current score bust rule strategy, for scores where a bust is possible, the strategy is built using two loops (not counting the estimate/refine loop):  an outer loop where the B value increments and an inner loop where the current score and for each iteration, targets are calculated for SxT3, then SxT2, then SxT1.

For the first iteration of the outer loop, B2, we calculate targets and expected turns for S2T3B2, then S2T2B2, and then S2T1 (B is not necessary for T=1, because if T=1, then S=B).  This will arrive at the same solution as the alternate bust rule.  Only the expected turns for S2T1 are needed to calculate optimal targets for further iterations of B.

The second iteration addresses a starting score of 3, or B3.  In order, targets are calculated for S2T3B3, S2T2B3, S3T3B3, S3T2B3, and then S3T1.  Note that the expected turns for a score of 3 at the start of a turn (S3T1) is an unknown value that is required to map the scores that cause a bust.  Once again, an estimate and refine loop can be used to arrive at precise optimal targets and expected turns.  Instead of the guesstimate I used to seed the current score bust rule strategy, I seeded this loop with the expected turns calculated using the current score bust rule.  As with the B2 iteration, only the expected turns for S3T1 are needed to map scores for iterations B4 and beyond, while the T2/T3 expected turns are not directly referenced but “baked in” to the S3T1 value. 

The process continues for B4, which ends at S4T1, B5, which ends at S5T1, and so on until all of the starting scores where a player can go bust are covered.  This goes up to B181, where 3 triple 20s can cause a bust.  Then the rest of the table is calculated for the remaining situations where a bust is not possible, ending with S501T1

Comparing Bust Rule Strategies and Start of Turn Scores 

Remember that the first optimal target for the current score bust rule, S2T3, is in the center of the double 1.  With this bust rule, the player will either hit the double 1 and win the game immediately, or begin the next turn with a score of 2, assuming they get another turn.  

With the start of turn bust rule, the starting score influences the target for S2T3 because, except for B2, a score of zero results in a different score than a bust.  Whether a score of zero of a bust is preferred depends on the B value.  A bust is preferred if the B value is a better starting score than 2, and a score of zero is preferred if the B value is worse than 2.  For the former situations, the optimal target moves towards the inside of the dartboard, while it moves towards the outside of the board for the latter situations. 

The following image shows Pigfoote’s optimal S2T3 targets for B3 (green, his worst starting score below 100), B2 (red) and B32 (blue, his best starting score).

On S2T3, Pigfoote should try to avoid a bust with a starting score of 3 (green), favor a bust with a starting score of 32 (blue), and maximize his chances of going out with a starting score of 2 (red).

Following his turn minimization strategy, Pigfoote will average 4.10, 3.83, and 3.46 turns to go out for S2T3B3, S2T3B2 and S2T3B32 respectively. 

The following table shows Pigfoote’s average turns at the start of his turn for a score of 2 through 16 following his turn minimization strategy and using both bust rules:

As the table shows, switching to the start of turn bust rule, Pigfoote’s worst score of 3 got much worse, increasing from 3.93 to 4.28 average turns.  His expected turns for the other odd scores also increased slightly by an average of 0.02 turns, while it dropped by 0.08 turns for his even scores besides 2. 

In a Game (Sometimes) Called Countdown, It’s (Sometimes) Good To Go Up

Although it sounds counterintuitive, compared to the CS bust rule, the ST bust rule produces generally lower expected turns because of the situations where increasing your score by going bust is a good thing.  The biggest improvement is for the S3T3B32 situation, where Pigfoote should intentionally go bust to return his score to 32 to start his next turn.  In this situation, his expected turns decrease from 4.54 with the CS bust rule to 3.68 with the ST bust rule. 

While it can make a big difference in some situations, the sum difference between the two rules isn’t much though.  Pigfoote’s optimized expected turns for a game of 501 darts goes from 10.89 using the CS bust rule to 10.85 with the ST bust rule used in competitive darts. 

Section F – Maximizing Win Expectancy, 501 Variant

Note that minimizing expected turns for a game of 501 darts is not the same as maximizing win percentage.  While following a turn minimization strategy is reasonably close to optimal for the vast majority of situations, there are a few situations where an alternate strategy can significantly improve a player’s chances to win the game.  

A Notable Deviation from the Turn Minimization Strategy

For Pigfoote, the most obvious deviation from his turn minimization strategy occurs on S50T3 when his opponent is very likely to go out on his next turn.  In 501 darts, 50 is the highest score that a player can go out on, by hitting the double bullseye.  However, the double bull is much smaller than the other doubles, so it is often a better idea to reduce your score to a better even number instead of trying to win the game immediately. 

For example, Pigfoote can hit a double bull only 6.7% of the time compared to 16.3% for other doubles.  Thus, for S50T3, his turn minimization strategy is to aim at the single 18 and hope to begin his next turn with his ideal score of 32 points.  This strategy reduces his expected turns by about 0.1 turns compared to aiming at the double bull, from about 3.95 to 3.85 turns.  

However, if Pigfoote is playing against a world class darts player who has a score of 32, he should aim at the double bull and try to win the game immediately because he is unlikely to get another chance to win.  My approximate model of a world class darts player gives them about an 83.7% chance to go out in a 3-throw turn with a score of 32.  Against this opponent, my estimate gives Pigfoote only a 6.6% chance to win the game following his turn minimization strategy for S50T3.  This is even less than his 6.7% chance of winning the game immediately by aiming at the double bullseye!  Aiming at the double bull, he has a 6.7% chance of winning immediately and a 5.1% chance of winning later, for a total win expectancy of 11.8% – an increase of about 80% compared to his turn minimization target. 

How to Calculate a Win Maximization Strategy

As with the Hi-Score variant of darts, calculating a win maximization strategy requires a model and strategy for the opposing darts player.  Assuming that we have this, it is then possible to convert each situation into a turns distribution table.  We can do the same for the current player/situation using the turn minimization strategy as a starting point.  Then we can calculate the win expectancy for each situation by multiplying the turn distribution tables.  For example, this shows the turns distribution tables that I used for Pigfoote’s S50T3O32 situation against a world class darts player:

The table shows the chances going out in exactly 1 through 7+ turns for Pigfoote, in the The table shows the chances going out in exactly 1 through 7+ turns for Pigfoote, in the S50T3 situation while aiming at the single 18 (PF-18) and double bullseye (PF-Bull), and his opponent, a world class darts player with a score of 32.  The WPct columns show Pigfoote’s chances of going out in X number of turns and winning the game. situation while aiming at the single 18 (PF-18) and double bullseye (PF-Bull), and his opponent, a world class darts player with a score of 32. The WPct columns show Pigfoote’s chances of going out in X number of turns and winning the game.

After calculating win expectancies using turn distribution tables for each situation, scores can now be mapped to win percentages and the targets can be optimized to maximize this win expectancy.  This quick-and-dirty method can achieve close to optimal targets for each individual situation based on the turn minimization strategy and without having to build a full win optimization strategy.  However, it won’t be perfect because the turn distribution tables are based on an imperfect strategy. 

To build a perfect strategy requires recalculating the entire strategy table, with an extra variable and loop for the opponent’s score.  With the start of turn bust rule, these situations are abbreviated SxTyBzOa, where x is the current score, y is the throw number, z is the score at the start of the turn, and a is the opponents score.  Because there are 500 possible scores in a game of 501 darts, a complete win optimization strategy requires 500 times as many records as the turn minimization strategy.  That’s a total of 6,600,00 situations with the start of turn bust rule used in competitive darts today.  This strategy can be built following the same process used to build the turn minimization tables, with an additional outer loop for the opponent’s score, starting at 2.  E.g, first, a complete strategy is built for an opponent’s score of 2, starting at S2T3B2, then a full strategy for an O of 3, and so on. 

The complete loop looks like: 

  • O 2 to 501
    • B 2 to 181 (situations where a bust is possible) 
      • S 2 to B loop value
        •  T3 (If S<= 61)
        •  T2 (If S<=121)
        •  T1 (If S = B loop value) 
    • S 62 to 501  (situations where a bust isn’t possible)
      • T3
      • T2 (If S >121)
      • T1 (If S > 181) 

Starting with the O2 loop, win expectancies are calculated based on the turn distribution tables for the inner B2 loop, where the strategy never varies regardless of the opponent.  For the inner S3 loop (and beyond), the initial estimate required for mapping scores that result in S3T1 can be seeded by the calculated win expectancies using the turn minimization strategy.  Following the order of the above loop, the targets and win expectancies will have been calculated in a previous iteration for all situations except for S3T1 that are needed to map scores to win percentages.

Starting at O3, another wrinkle is introduced when mapping scores to win percentages for the last throw of a turn, or for scores that go bust:  we don’t know what the current player’s next situation will be, because we don’t know what the opponent’s score will be at the end of their turn.  This can be addressed by calculating an end of next turn score distribution table for the opposing player.  Then the scores are mapped based on weighted win expectancies for the next turn O values. 

For example, suppose Pigfoote is playing against an identical twin who follows his turn minimization strategy and has a score of 3.  If his opponent gets another turn, they will win the game on this turn 16.0% of the time, end with a score of 2 33.6% of the time, and end with a score of 3 50.4% of the time.  So for Pigfoote’s S3T3O3 situation, a score of 1 is mapped to S2T1O2 * 0.336 + S2T1O3 * 0.504 + (0*0.16).  After solving for O3, the process continues for O4, O5, O6, and so on until O501 and a complete win maximization strategy is built.  

A Game Theory Solution

The above describes the process for creating a complete win maximization strategy based on the opponent’s strategy.  The opponent might also be trying for an optimal strategy, and therefore could follow the same process to maximize their win expectation based on the first player’s win maximization strategy.  The first player could then build a new strategy to maximize win expectancy against their opponent’s new strategy.  The two players can repeat the process indefinitely.  Assuming there isn’t a rock-paper-scissors type scenario, which I think is unlikely for the game of 501 Darts, eventually a strategy would be built where the targets didn’t change for any of the 6.6 million situations.

Then the two players will have arrived at a Nash equilibrium, in which neither player’s expected outcome can be improved by changing one’s own strategy. 

Conclusion

While Part 1 of this work 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 represented by a single model that looks like a perfect circle.  

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.  See:  The Solution to Darts for the surprising conclusion.