public Accord.Range GetRange(float percent)
{
int min, max, hits;
int h = (int)(total * (percent + (1 - percent) / 2));
int n = values.Length;
int nM1 = n - 1;
// skip left portion
for (min = 0, hits = total; min < n; min++)
{
hits -= values[min];
if (hits < h)
break;
}
// skip right portion
for (max = nM1, hits = total; max >= 0; max--)
{
hits -= values[max];
if (hits < h)
break;
}
// return range between left and right boundaries
return new Range(
((float)min / nM1) * range.Length + range.Min,
((float)max / nM1) * range.Length + range.Min);
}