private static double WeightedAverage(IList<double> input, int spread = 40)
{
if (input.Count == 1)
{
return input.Average();
}
var weightdifference = spread / (input.Count() - 1);
var averageWeight = 50;
var startWeight = averageWeight - spread / 2;
return input.Select((x, i) => x * (startWeight + (i * weightdifference)))
.Sum() / (averageWeight * input.Count());
}