Определить параметры распределения (мат.ожидание, дисперсию, СКО, коэф.корреляции) - C#
Формулировка задачи:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Lab1
{
public partial class Form1 : Form
{
int N;
public Form1()
{
InitializeComponent();
}
double MX(double[] a)
{
double sum = 0;
for (int i = 0; i < N;i++)
{
sum += a[i];
}
return sum/N;
}
double DX(double[] a)
{
double sum = 0;
for (int i = 0; i < N;i++)
{
sum += Math.Pow(a[i]-MX(a),2);
}
sum=sum/(N*(N-1));
return Math.Sqrt(sum);
}
private void button1_Click(object sender, EventArgs e)
{
N = Convert.ToInt16(textBox1.Text);
Random rand = new Random();
dataGridView1.ColumnCount = N;
double[] a = new double[N];
for(int i=0;i<N;i++)
{
a[i] = rand.Next(0, 10);
dataGridView1.Rows[0].Cells[i].Value = a[i];
}
double M_X = MX(a);
double D_X = DX(a);
MessageBox.Show("MX=" + M_X.ToString() + " DX=" + D_X.ToString());
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}Решение задачи: «Определить параметры распределения (мат.ожидание, дисперсию, СКО, коэф.корреляции)»
textual
Листинг программы
double M(List<double> t) //генеральная средняя
{
return t.Average();
}
double D(List<double> t) //исправленная дисперсия
{
double m = M(t);
return t.Sum(a => (a - m) * (a - m)) / (t.Count - 1);
}
double G(List<double> t) //среднеквадратическое отклонение
{
return Math.Sqrt(D(t));
}
private void button1_Click(object sender, EventArgs e)
{
N = Convert.ToInt16(textBox1.Text);
if (int.TryParse(textBox1.Text, out N))
{
Random rand = new Random();
dataGridView1.ColumnCount = N;
List<double> sp = new List<double>(N);
for (int i = 0; i < N; i++)
{
sp.Add(rand.Next(0, 10));
dataGridView1.Rows[0].Cells[i].Value = sp[i];
}
double M_X = M(sp);
double D_X = D(sp);
double G_X = G(sp);
//double Kxy = K(sp, sp);
richTextBox1.AppendText(String.Format("{0}\r\n {1}\r\n {2}\r\n {3}\r\n", M_X, D_X, G_X, Kxy));
}
else Console.WriteLine("Количество элементов должно быть целым числом");
}