首页 > 编程知识 正文

正态分布函数的密度函数,正态分布常用函数

时间:2023-05-04 09:14:20 阅读:235220 作者:398

kettle版本

kettle 5.4

需求描述

excel中可以通过正态分布函数NORMDIST生成给定值的正态分布值,如下所示:

本文讲解如何通过kettle实现excel的NORMDIST函数。

实现效果

实现方式 1、生成记录

模拟数据输入

2、Java代码

使用注意:
如果直接将计算的double值输出,kettle默认会截断为小数点后1位,所以这里输出为字符串,保留小数点后5位。

详细代码:

import org.apache.commons.math3.distribution.NormalDistribution;public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException{// Let's look up parameters only once for performance reason.//if (first) { first=false;}// First, get a row from the default input hop//Object[] r = getRow();// If the row object is null, we are done processing.//if (r == null) { setOutputDone(); return false;}// It is always safest to call createOutputRow() to ensure that your output row's Object[] is large// enough to handle any new fields you are creating in this step.//Object[] outputRow = createOutputRow(r, data.outputRowMeta.size());double x_in = get(Fields.In, "x_in").getNumber(r);double mean_in = get(Fields.In, "mean_in").getNumber(r);double standard_dev_in = get(Fields.In, "standard_dev_in").getNumber(r);// Set the value in the output field//Number nd = getNd(x_in, mean_in, standard_dev_in) ;logBasic("nd:"+nd);//get(Fields.Out, "nd").setValue(outputRow, nd);get(Fields.Out, "nd").setValue(outputRow, String.format("%.5f",nd));// putRow will send the row on to the default output hop.//putRow(data.outputRowMeta, outputRow);return true;}/** * 计算正态分布值 * * <pre> * 方法同excel NORMDIST 函数 * </pre> * * @param x * 需要计算其分布的数值 * @param mean * 分布的算术平均值 * @param standard_dev * 标准偏差 * @return 正态分布值 */public static double getNd(double x, double mean, double standard_dev) {return new NormalDistribution(mean, standard_dev).density(x);} 3、写日志

内容保留为空即可,默认输出全部变量

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。