標準正態分佈函式表的程式實現
阿新 • • 發佈:2019-01-06
現在的很多程式中要想實現查詢正態分佈函式表,將幾百條資料用陣列存放起來 再在程式中查詢是非常笨拙的方法,現在提供一種實現的演算法(Java),可以避免這種笨拙的實現方式:
/** * 根據分割積分法來求得積分值 * -3.89~3.89區間外的積分面積 小於 0.0001, * 所以確定有效的積分割槽間為-3.89~3.89 * 在實現分割的時候精度定為0.0001,得到的結果和查表得到的結果誤差在-0.0002~+0.0002之間(已經檢驗) * * @param u 積分上限 * @return 積分值 */ private static float selfCaculate(float u){ float ret = 0; if(u < -3.89){ return 0; } else if(u > 3.89){ return 1; } float temp = -3.89f; while(temp <= u){ ret += 0.0001f * fx(temp); temp += 0.0001f; } return ret; } /** * 求被積函式的函式值 (1/(2 * PI)^(0.5))e^(-t^2/2) * @param x 變數x * @return 函式值 */ private static float fx(float x){ float ret = 0; double a = 1.0 / Math.sqrt(Math.PI * 2); a = a * Math.pow(Math.E, -0.5 * Math.pow(x, 2)); ret = (float) a; return ret; }
上面的實現方式精度是定在0.0001的 若想提高精度 只要適當擴大積分的區間(-3.89~3.89
) 以及縮小分割區間(0.0001)就可以了