public void Add(double x) { int size = data.Span; if (size < Span) { double mean = Mean + (x - Mean) / (size + 1); double variance = 0.0; if (size != 0) { variance = size * Variance; variance += (x - Mean) * (x - mean); variance /= (size + 1); } _mean = mean; _variance = variance; } else { //Var[b] = [ (n-1)*Var[A] + n*Abar^2 + (x6^2 - x1^2) - n*Bbar^2 ] / (n-1) double mean = Mean + (x - data[0]) / Span; _variance = (Span * Variance + Span * (Mean * Mean - mean * mean) + x * x - data[0] * data[0]) / Span; _mean = mean; } data.Add(x); }
public void FillArray() { var array = new ShiftingArray <int>(5); var list = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; for (int i = 0; i < 5; i++) { array.Add(list[i]); Assert.That(array.Span, Is.EqualTo(i + 1)); Assert.That(array[i], Is.EqualTo(list[i])); } for (int i = 5; i < list.Length; i++) { array.Add(list[i]); Assert.That(array.Span, Is.EqualTo(5)); Assert.That(array[0], Is.EqualTo(list[i - 4])); Assert.That(array[4], Is.EqualTo(list[i])); } }
public double Add(double x) { int size = data.Span; if (size < Span) { _average = (size * _average + x) / (size + 1); } else { _average += (x - data[0]) / Span; } data.Add(x); return(_average); }