31 million systematic throws or 91 million random ones. Which one taught us more.
The answer isn't obvious. Systematic grid search gives you coverage. Random sampling gives you reality. You need both, and you need to know what each one is telling you.
When we designed the cornhole physics simulation, the first question was how to sample the parameter space. Two obvious options: full grid (every combination of every parameter value) or randomized sampling (draw from realistic distributions). We did both. They told us different things.
This pattern shows up everywhere in simulation work. I want to write it down clearly because I'll use it again.
What the grid gives you
A full parametric grid gives you coverage. Every combination is represented. You can ask questions like: "at a 45-degree launch angle with 3 rev/s of spin, what fraction of throws are woodies?" and get an exact answer from the database because that exact combination exists.
The QC grid ran 31.9 million throws across 8 parameters. Cornhole rate: 0.20%. That number represents the rate across the full mathematical parameter space, including throws that no human ever actually throws. A 20-degree launch from 27 feet at 12 ft/s is in the database. Nobody throws like that.
The grid is excellent at mapping the landscape. It finds the corners and the edges. It tells you which combinations are categorically impossible versus merely unlikely. That's valuable for any analysis of the outcome space — you need the full landscape before you can identify which regions are practically relevant.

What randomized sampling gives you
Randomized sampling with realistic distributions gives you reality. When you draw launch angles from the distribution of what competitive players actually throw (clustered in the 30-45 degree range, not spread evenly from 20 to 65), the statistics start reflecting actual play.
The overnight run pulled from realistic ranges and got a 7.3% scoring rate and 2.09% cornhole rate across 91.6 million throws. That 10x jump in scoring rate compared to the grid isn't the simulation doing something different. It's the grid including territory that doesn't exist in real play.
The overnight number represents real-world distributions. The grid number maps the full theoretical space.
The gap between them is information
The 7.3% vs. 0.66% gap isn't noise. It's telling you something specific: most of the grid's territory is physically unreachable by real players. The realistic parameter space is a small slice of the mathematical parameter space. Good throws cluster tightly. If you design your coaching system around the grid alone, you'll be optimizing for throws that never happen.

This is the pattern I want to generalize. Grid search first to map the landscape and find the corners. Randomized sampling calibrated to reality second, to understand where the actual distribution lives. Treat the gap between grid statistics and sampling statistics as a measurement of how much of your parameter space is theoretical vs. practical.
When to apply this
Any time you're running a simulation over a large parameter space: run both. When the grid says X% and the randomized run says 10X%, that's not a discrepancy to explain away. That's the finding. The parameter space you're optimizing for is much smaller than the parameter space you're exploring.
The pattern also applies to any hyperparameter sweep in ML. A full grid over learning rate, batch size, and weight decay tells you the landscape. Bayesian optimization sampling from realistic regions tells you where to actually train. Use the grid to understand the edges, use randomized sampling to find the center of mass.
For any analysis downstream of this simulation, the implication is direct: the useful parameter space is a small slice of the mathematical parameter space. Knowing where that slice sits is the output of running both.