in MotionMark/resources/statistics.js [394:421]
bootstrap: function(samples, iterationCount, processResample, confidencePercentage)
{
var sampleLength = samples.length;
var resample = new Array(sampleLength);
var bootstrapEstimator = new Experiment;
var bootstrapData = new Array(iterationCount);
Pseudo.resetRandomSeed();
for (var i = 0; i < iterationCount; ++i) {
for (var j = 0; j < sampleLength; ++j)
resample[j] = samples[Math.floor(Pseudo.random() * sampleLength)];
var resampleResult = processResample(resample);
bootstrapEstimator.sample(resampleResult);
bootstrapData[i] = resampleResult;
}
bootstrapData.sort(function(a, b) { return a - b; });
return {
confidenceLow: bootstrapData[Math.round((iterationCount - 1) * (1 - confidencePercentage) / 2)],
confidenceHigh: bootstrapData[Math.round((iterationCount - 1) * (1 + confidencePercentage) / 2)],
median: bootstrapData[Math.round(iterationCount / 2)],
mean: bootstrapEstimator.mean(),
data: bootstrapData,
confidencePercentage: confidencePercentage
};
}