首先我們先了解樣本標準差和總體標準差:
樣本標準差=方差的算術平方根=s=sqrt(((x1-x)^2 +(x2-x)^2 +......(xn-x)^2)/(n-1)) 總體標準差=σ=sqrt(((x1-x)^2 +(x2-x)^2 +......(xn-x)^2)/n )下面是簡單的區別:

上面的資料是用Excel來計算的,方便對我們軟體輸出的資料做對比,
https://jingyan.baidu.com/article/17bd8e5275d85985aa2bb855.html
這個是excel里對標準差函式的使用方法

了解了基本概念,下面就是C#代碼了,在表單創建一個按鈕來測驗
private void button4_Click(object sender, EventArgs e) { float[] data = https://www.cnblogs.com/xing2/p/new float[] { 290, 517, 850, 484, 856, 784, 666, 865, 445, 243 };//不定長陣列 float 樣本標準差, 總體標準差; STDEV(data,out 樣本標準差,out 總體標準差); MessageBox.Show(樣本標準差.ToString() + "," + 總體標準差.ToString()); } /// <summary> /// 樣本標準差和總體標準差計算 /// </summary> /// <param name="arrData">資料陣列</param> /// <param name="std_dev">樣本標準差</param> /// <param name="STDP">總體標準差</param> public void STDEV(float[] arrData,out float std_dev,out float STDP) //計算標準偏差 { float xSum = 0F;//樣本總和 float xAvg = 0F;//樣本平均值 float sSum = 0F;//方差的分子 //float tmpStDev = 0F; int arrNum = arrData.Length;//得到樣本數量,分母 for (int i = 0; i < arrNum; i++)//回圈計算得到樣本總和 { xSum += arrData[i]; } xAvg = xSum / arrNum;//計算得到樣本平均值 for (int j = 0; j < arrNum; j++)//得到方差的分子 { sSum += ((arrData[j] - xAvg) * (arrData[j] - xAvg)); } std_dev = Convert.ToSingle(Math.Sqrt((sSum / (arrNum - 1))).ToString());//樣本標準差 STDP = Convert.ToSingle(Math.Sqrt((sSum / arrNum)).ToString());//總體標準差 }
計算結果:

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/428409.html
標籤:C#
