今年三月以來,一直在做工藝質量系統,基礎做完了,開始做統計分析,其中需要計算菸支和菸絲的工藝合格率,一開始以為就是合格數/樣品數,結果常常是100%合格。後來發現原來犯了自以為是的錯誤,在質量統計學裡面,合格率不是這麼算的。
計量型不合格率演算法:
1.雙側標準:
p=1- φ((usl-μ)/ σ) + φ((lsl-μ)/ σ)
2.單側標準:
望小值:p=1-φ((usl-μ)/ σ)
望大值:p=φ((lsl-μ)/ σ)
φ為標準正態分佈函式,網上找了很久,沒發現現成的**,自己想到了乙個方法,在c#中操作excel來計算,**寫出來了,結果發布到伺服器傻眼了,伺服器沒裝office,查了相關資料,發現微軟不建議使用office元件。於是轉為使用求積分函式,有找了很久,都不合用(可能我比較笨,改不好),最後同事幫我寫了乙個:
static double mymathtype(double x)
static public double ge***(double x)
else
if (math.abs(t[k, k] - t[k - 1, k - 1]) < ep)
break;
m2 = m2 + 1;}}
i = t[k, k];
q = q + i;
if (math.abs(i) < ep)
break;
b = a; s = 2 * s;
temp = math.round(q, 10);
}return temp;
}精度是夠了,改改**發布上去。
用了一段時間,客戶反映經常出錯,上伺服器看看,發現記憶體溢位。竟然問題出現,就解決,找了好久,在一次無意中發現一執行這個函式,記憶體呼呼就上去了幾百兆。
沒辦法,只能換個函式了,這時候想到了數學中,數列的列舉,思路:把所有引數和函式值全部列舉出來,放到泛型雜湊表中,然後根據key(引數)找到value(函式值)。
確定引數精度3位,值精度9位,在6.110後值為1,在-6.110後值為0。利用excel填充序列的方式,拉了12000多行。然後在資料庫中建了個表,乙個欄位放引數,乙個欄位放函式值,在利用select生成「hashtable.add(key,value);」的格式,複製到類的填充方法中,搞定。
public class normsdist
///
/// 返回正態分佈函式值
///
/// 正態分佈函式變數
///
public static double getvalue(string x)
///
/// 計算正態分佈函式值
///
/// 正態分佈函式變數
///
static double calculatenormsdist(double key)
if (key <= -6.110)
else if (key >= 6.110)
else
}///
/// 初始化正態分佈表
///
static void sethashtable()
}經過測試,記憶體基本不變化,而且效率不錯。
標準正態分佈怎麼算 標準正態分佈函式的快速計算方法
標準正態分佈的分布函式 phi x 可以說是 資料分析師 統計計算中非常重要的乙個函式,基本上有正態分佈的地方都或多或少會用上它。在一些特定的問題中,我們 資料分析師 需要大量多次地計算這個函式的取值,比如我經常需要算正態分佈與另乙個隨機變數之和的分布,這時候就需要用到數值積分,而被積函式就包含 p...
標準正態分佈怎麼算 標準正態分佈函式的快速計算方法
標準正態分佈函式的 快速計算方法 標準正態分佈的分布函式 x x 可以說是統計計算中非 常重要的乙個函式,基本上有正態分佈的地方都或多或少會用上它。在一些特定的問題中,我們需要大量多次地計算這個函式的取值,比如我經常需要算正態分佈與另乙個隨機變數之和的分布,這時候就需 要用到數值積分,而被積函式就包...
正態分佈函式
1 使用matlab畫出正態分佈的概率密度函式影象。x 10 0.01 10 y normpdf x,0,1 正態分佈函式。figure axes1 axes pos 0.1 0.1 0.85 0.85 plot x,y set axes1,ylim 0.01 0.43 xlim 3 3 圖1 2 ...