C# Basic Statistics Mean Mode Median and Histogram
unknown
csharp
3 years ago
3.6 kB
5
Indexable
namespace BasicStatisticApp { public partial class MainForm : Form // Data storage private int[] rawData; private int[] sortedData; private int size, lowerLimit, upperLimit; public mainForm() { initializeComponent(); } /// <summary> /// Event handler to read the inputs - generate Data and Sort the data. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> // Function to calculate the mean of the data private void CalcMean() { double sum = 0; for(int i=0; i<size; i++) { sum += rawData[i]; } return sum / size; } // Generate the Random Data Set & then Sort the Random Data Set private void btnGenerate_Click(object sender, EventArgs e) { // Parse values size = int.Parse(txtsize.Text); lowerLimit = int.Parse(txtLower.Text); upperLimit = int.Parse(txtUpper.Text); // allocate rawData = new int[size]; sortedData = new int[size]; // Generate data Random random = new Random(); for(int i=0; i<size; i++) { rawData[i] = random.Next(lowerLimit, upperLimit +1); sortedData[i] = rawData[i]; } // sort sortedData(); // Load into Lists lstRaw.Items.Clear(); lstSorted.Items.Clear(); for(int i=0, i<size; i++) { lstRaw.Items:Add(rawData[i]); lstSorted.Items.Add(sortedData[i]); } } private void SortedData() { for(int i=0; i<size; i++) { for(int j=i+1; j<size; j++) { if(sortedData[i] > sortedData[j]) { int tmp = sortedData[i]; sortedData[i] = sortedData[j]; sortedData[j] = tmp; } } } } private double CalcMedian() { double median = 0; int mid = 0; // check the size if(size % 2 == 0) { mid = size / 2; median = (sortedData[mid] + sortedData[mid+1]) / 2.0; } else { mid = size / 2; median = sortedData[mid]; } return median; } // CallMean, mode and median functions // display Histogram private void btnCalculate_Click(object sender, EventArgs e) { int[] freq = CalculateFrequencies(); txtMean.Text = CalcMean().ToString("0.00"); txtMode.Text = CalcMode(freq).ToString("0.00"); txtMedian.Text = CalcMedian().ToString("0.00"); // Now we display the Chart this.histogramChart.Series.Clear(); var series = this.histogramChart.Series.Add("Random Variable"); for(int i=0; i<freq.Lenght; i++) { series.Points.AddXY(i, freq[i]); } } // Function to calculate the frequencies of the numbers private void CalculateFrequencies() { // new array int[] freq = new int[upperLimit + 1]; for(int i=0; i<size; i++) { freq[rawData[i]] += 1; } return freq; } // Mode private int CalcMode(int [] frequenies) { // find max frequency int max = frequenies[0]; int maxIndex = 0; for(int i=0; i<frequenies.Length; i++) { if(max < frequenies[i]) { max = frequenies[i]; maxIndex = i; } } return maxIndex; // this is our mode } }
Editor is loading...