DirectOutputR1
DirectOutput framework R1 for virtual pinball cabinets.
Go to:
Overview 
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Events Macros Pages
SimpleStatistics.cs
Go to the documentation of this file.
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 
6 namespace DirectOutput.General.Statistics
7 {
8  public class SimpleStatistics<ValueType> where ValueType : IComparable
9  {
10  public string Name { get; set; }
11 
12 
13 
14  List<ValueType> _MaxValues = new List<ValueType>();
15 
16  public ValueType MaxValue
17  {
18  get
19  {
20  return MaxValues.Max();
21  }
22  }
23 
24  public List<ValueType> MaxValues
25  {
26  get { return _MaxValues; }
27  private set { _MaxValues = value; }
28  }
29 
30 
31  List<ValueType> _MinValues = new List<ValueType>();
32 
33  public ValueType MinValue
34  {
35  get
36  {
37  return MaxValues.Min();
38  }
39  }
40 
41 
42  public List<ValueType> MinValues
43  {
44  get { return _MinValues; }
45  private set { _MinValues = value; }
46  }
47 
48  long _ValuesCount = 0;
49 
50  public long ValuesCount
51  {
52  get { return _ValuesCount; }
53  }
54 
55 
56  private ValueType MaxBoundary;
57  private ValueType MinBoundary;
58  private bool MinMaxBufferFull = false;
59  public void AddValue(ValueType Value)
60  {
61  _ValuesCount++;
62  if (!MinMaxBufferFull)
63  {
64  MaxValues.Add(Value);
65  MinValues.Add(Value);
66  if (MaxValues.Count >9)
67  {
68  MaxBoundary = MaxValues.Min();
69  MinBoundary = MinValues.Max();
70  MinMaxBufferFull = true;
71  }
72  return;
73  }
74 
75 
76  if (Value.CompareTo(MaxBoundary)>0)
77  {
78  MaxValues.Remove(MaxBoundary);
79  MaxValues.Add(Value);
80  MaxBoundary = MaxValues.Min();
81  }
82  if (Value.CompareTo(MinBoundary) <0)
83  {
84  MinValues.Remove(MinBoundary);
85  MinValues.Add(Value);
86  MinBoundary = MinValues.Max();
87  }
88 
89 
90 
91 
92  }
93 
94 
95 
96 
97 
98 
99 
100  }
101 }