标准正态分布函数表的程序实现

现在的很多程序中要想实现查询正态分布函数表,将几百条数据用数组存放起来 再在程序中查询是非常笨拙的方法,现在提供一种实现的算法(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)就可以了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值