4. 小明的第一份程式設計工作
# 用 MenuStrip
namespace Q4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void 求F統計值和自由度dfToolStripMenuItem_Click(object sender, EventArgs e)
{
List<List<double>> all = new List<List<double>>();
foreach (var item in textBox1.Text.Split('\n'))
{
all.Add(item.Substring(item.IndexOf(':') + 2, item.Length - item.IndexOf(':') - 2).Split(' ').Select(double.Parse).ToList());
};
int N = all.Sum(e => e.Count);
int dfB = all.Count - 1;
int dfW = N - all.Count;
double UT = 0;
foreach (var item in all)
{
UT += item.Sum();
}
UT /= N;
double SSb = 0;
double SSw = 0;
foreach (var item in all)
{
var ut = item.Sum() / item.Count;
SSb += Math.Pow(ut - UT, 2) * item.Count;
foreach (var d in item)
{
SSw += Math.Pow(d - ut, 2);
}
}
var MSb = SSb / dfB;
var MSw = SSw / dfW;
textBox2.Text = @$"F統計值計算:
F = {MSb / MSw:0.000}
自由度df: {dfB}, {dfW}";
}
private void cToolStripMenuItem_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
textBox1.Text = new StreamReader(openFileDialog1.OpenFile()).ReadToEnd();
}
private void 結束ToolStripMenuItem_Click(object sender, EventArgs e)
{
Close();
}
}
}
Last updated