Simple heuristic for breaking pills in half


Quickly:
I have to give my son dramamine on road trips, but only half a pill. That’s been a bit tricky. Even scored pills don’t always break cleanly, and then what do you do? Break it again? Actually yes. I did a simple simulation to show how you can increase your chances of breaking a pill into two half-sized portions by 15-20% (e.g. from 70% to about 85%):
1. Try to break the pill in half.
2. If you succeed, great, if not, try to break each half in half.
3. Between your four resulting fragments, some pair of them has its own probability of adding up to half a pill, plus or minus.

Honestly I thought it would work better. This is the value of modeling.

Explanation:
If after a bad break from one to two pieces you break again to four pieces, you will end up with six possible combinations of the four fragments. Some of these are equivalent so all together going to four pieces amounts to creating two more chances to create a combination that adds to 50%. And it works: your chances go up. This is simple and effective. But not incredibly effective. I thought it would increase your chances of a match by 50% or more, but the benefit is closer to 15-20%. So it’s worth doing, but not a solution to the problem. Of course, after a second round of splitting you can keep splitting and continue the gambit. In the limit, you’ve reduced the pill to a powder whose grains can add to precisely 50% in uncountable numbers of combinations, but that’s a bit unwieldy for road trip dramamine. For the record, pill splitters are also too unwieldy for a roadtrip, but maybe they’re worth considering if my heuristic only provides a marginal improvement.

The code:
Here is the simulation. Parameters: I allowed anything within 10% of half of a pill to be “close enough”, so anything in the 40% to 60% range counts. Intention and skill make the distribution of splits non-uniform, so I used a truncated normal with standard deviation set to a 70% chance of splitting the pill well on the first try.

#install.packages("truncnorm")
library(truncnorm)
inc_1st <- 0
inc_2nd <- 0
tol <- 0.1
for (i in 1:100 ) {
  #print(i);
  #a <- runif(1)
  a <- rtruncnorm(1, a=0, b=1, mean=0.5, sd=0.5^3.3)
  b <- 1 - a
  if ( a > (0.5 - tol) & a < (0.5 + tol)) {
    inc_1st <- inc_1st + 1
  } else {
    #aa <- runif(1, 0, a)
    aa <- rtruncnorm(1, a=0, b=a, mean=a/2, sd=(a*2)^3.3)
    ab <- a - aa
    #ba <- runif(1, 0, b)
    ba <- rtruncnorm(1, a=0, b=b, mean=b/2, sd=(b*2)^3.3)
    bb <- b - ba
    totals <- c(aa+ba, aa+bb)
    if (any( totals > (0.5 - tol) & totals < (0.5 + tol)) ) {
      #print(totals)
      inc_2nd <- inc_2nd + 1
    } else {
      #print(totals)
    }
  }
}

#if you only have a 20% chance of getting it right with one break, you have a 50% chance by following the strategy
#if you only have a 30% chance of getting it right with one break, you have a 60% chance by following the strategy
#if you only have a 60% chance of getting it right with one break, you have a 80% chance by following the strategy
#if you only have a 70% chance of getting it right with one break, you have a 85% chance by following the strategy

print(inc_1st)
print(inc_2nd)
print(inc_1st + inc_2nd)