The Laundry Quarter Recurrence: A Birthday Problem Estimation

Musings
Estimations
Author

Connor Lockhart

Published

April 1, 2026

Have you ever wondered if the quarter you just dropped into the laundry machine is one you’ve held before? A friend recently asked me this very question. A solution can be derived from the same idea as the Generalized Birthday Problem, the odds might be higher than you’d expect.

The Math

To estimate this, we consider: - \(n\): The total number of quarters you’ve handled over a period of time. - \(N\): The total pool of quarters in circulation in your local area.

The true probability \(P\) that at least two quarters in your sample of \(n\) are the same is given by:

\[P(n, N) = 1 - \prod_{i=0}^{n-1} \left(1 - \frac{i}{N}\right)\]

Deriving the True Probability

To find the probability of at least one collision, it is easier to calculate the probability of no collisions and subtract it from 1.

If we have a pool of \(N\) quarters and we pick \(n\) of them: 1. The first quarter can be anything (\(N/N\) chance of being “new”). 2. The second quarter must be different from the first (\((N-1)/N\) chance). 3. The \(i\)-th quarter must be different from all previous \(i-1\) quarters (\((N-(i-1))/N\) chance).

The probability that all \(n\) quarters are unique is the product of these individual probabilities: \[P(\text{unique}) = \frac{N}{N} \times \frac{N-1}{N} \times \frac{N-2}{N} \times \dots \times \frac{N-(n-1)}{N}\] \[P(\text{unique}) = \prod_{i=0}^{n-1} \left(\frac{N-i}{N}\right) = \prod_{i=0}^{n-1} \left(1 - \frac{i}{N}\right)\]

Thus, the probability of at least one duplicate is \(1 - P(\text{unique})\).

Deriving the Approximation

For large \(N\) and relatively small \(n\), we can use the Taylor series expansion for the exponential function, \(e^{-x} \approx 1 - x\) for small \(x\). Conversely, \(1 - \frac{i}{N} \approx e^{-i/N}\).

Substituting this into our product: \[P(\text{unique}) \approx \prod_{i=0}^{n-1} e^{-i/N} = e^{-\sum_{i=0}^{n-1} \frac{i}{N}}\]

The sum of the first \(n-1\) integers is \(\frac{n(n-1)}{2}\), so: \[P(\text{unique}) \approx e^{-\frac{n(n-1)}{2N}}\]

This gives us the familiar approximation for the birthday problem: \[P(n, N) \approx 1 - e^{-\frac{n(n-1)}{2N}}\]

Estimating the Local Pool (\(N\))

Rather than guessing \(N\), we can estimate it based on the population. If we know the total number of quarters in the US (\(Q_{total}\)) and the US population (\(Pop_{total}\)), we can estimate the local pool for a metro area with population \(Pop_{metro}\):

\[N = Q_{total} \times \frac{Pop_{metro}}{Pop_{total}} \times (1 - \text{Loss Rate})\]

The “Loss Rate” accounts for quarters that are “dormant” (in jars or couch cushions) or have been lost to the general economy.

Interactive Estimation

Adjust the sliders below to see how your habits and your city’s size affect the likelihood of a “quarter collision.”

Code
viewof quartersPerWeek = Inputs.range([1, 100], {value: 20, step: 1, label: "Quarters spent/week"})
viewof years = Inputs.range([0.1, 50], {value: 3, step: 0.1, label: "Years in area"})
viewof metroPopulation = Inputs.number({value: 1000000, label: "Metro Population"})
viewof lossRate = Inputs.range([0, 0.99], {value: 0.5, step: 0.01, label: "Loss Rate (Dormant/Lost)"})
Code
totalUSQuarters = 65000000000
totalUSPopulation = 349000000

// Calculations
n = quartersPerWeek * 52 * years
N = totalUSQuarters * (metroPopulation / totalUSPopulation) * (1 - lossRate)

// True Probability using log-sum for stability
function calculateTrueProb(n, N) {
  if (n > N) return 1;
  let logProbNot = 0;
  for (let i = 0; i < n; i++) {
    logProbNot += Math.log(1 - i / N);
  }
  return 1 - Math.exp(logProbNot);
}

probTrue = calculateTrueProb(n, N)
probApprox = 1 - Math.exp(-(n * (n - 1)) / (2 * N))

md`
### Results

Based on a US total of **65 billion quarters** and a population of **349 million**, your local pool **N** is estimated at **${d3.format(",")(Math.round(N))}** active quarters.

Over **${years}** years spending **${quartersPerWeek}** quarters a week, you've handled approximately **${d3.format(",")(Math.round(n))}** quarters.

The probability of having used the same quarter twice is:

## ${d3.format(".4%")(probTrue)}

*(Approximation: ${d3.format(".4%")(probApprox)})*
`

Assumptions

This model assumes a “perfectly mixed” pool where every quarter in the metro area has an equal chance of landing in your pocket. In reality, quarters might cluster in local businesses or laundromats, potentially increasing the local probability even further!