關於求標準正態分佈函式值

2021-05-23 06:18:28 字數 1584 閱讀 1294

今年三月以來,一直在做工藝質量系統,基礎做完了,開始做統計分析,其中需要計算菸支和菸絲的工藝合格率,一開始以為就是合格數/樣品數,結果常常是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 ...