foreach (numSamples; iota(0, 1000+1, 100).filter!(n => n > 0))
auto samples = new double[numSamples];
enum numTotalSamples = 10_000_000;
auto numSizes = numTotalSamples / numSamples;
auto sizes = new double[numSizes];
foreach (ref size; sizes)
foreach (i; 0 .. numSamples)
auto sample = uniform01!double;
if (sample >= objectStart && sample < objectEnd)
size = 1.0 / numSamples * numHits;
writef("%d samples:", numSamples);
foreach (certainty; [50, 90, 99])
auto centerDist = numSizes * certainty / 100 / 2;
auto startPos = numSizes / 2 - centerDist;
auto endPos = numSizes / 2 + centerDist;
writef("\t%.5f..%.5f", sizes[startPos], sizes[endPos]);