You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
2.2 KiB
76 lines
2.2 KiB
4 years ago
|
/*
|
||
|
* Copyright (C), 2015-2020
|
||
|
* FileName: NORMSDIST
|
||
|
* Author: Louis
|
||
|
* Date: 2020/5/22 15:50
|
||
|
* Description: NORMSDIST
|
||
|
* History:
|
||
|
* <author> <time> <version> <desc>
|
||
|
*/
|
||
|
package com.fr.plugin.hdbk.function;
|
||
|
|
||
|
import com.fanruan.api.i18n.I18nKit;
|
||
|
import com.fanruan.api.log.LogKit;
|
||
|
import com.fr.base.Utils;
|
||
|
import com.fr.intelli.record.Focus;
|
||
|
import com.fr.intelli.record.Original;
|
||
|
import com.fr.plugin.context.PluginContexts;
|
||
|
import com.fr.plugin.hdbk.Constants;
|
||
|
import com.fr.record.analyzer.EnableMetrics;
|
||
|
import com.fr.script.AbstractFunction;
|
||
|
import com.fr.stable.Primitive;
|
||
|
import com.fr.stable.fun.Authorize;
|
||
|
import com.fr.third.org.apache.commons.math3.distribution.NormalDistribution;
|
||
|
|
||
|
import java.math.BigDecimal;
|
||
|
|
||
|
import static com.fr.plugin.hdbk.Constants.PLUGIN_ID;
|
||
|
|
||
|
/**
|
||
|
* <Function Description><br>
|
||
|
* <NORMSDIST类-正态累计分布函数>
|
||
|
*
|
||
|
* @author Louis
|
||
|
* @since 1.0.0
|
||
|
*/
|
||
|
@EnableMetrics
|
||
|
@Authorize(callSignKey = Constants.PLUGIN_ID)
|
||
|
public class NORMSDIST extends AbstractFunction {
|
||
|
private static final long serialVersionUID = -422355325281808141L;
|
||
|
|
||
|
public NORMSDIST() {
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* args参数: z需要计算器分布的数值
|
||
|
*
|
||
|
* @param args
|
||
|
* @return
|
||
|
*/
|
||
|
@Override
|
||
|
@Focus(id = PLUGIN_ID, text = "Plugin-hdbk", source = Original.PLUGIN)
|
||
|
public Object run(Object[] args) {
|
||
|
if (!PluginContexts.currentContext().isAvailable()) {
|
||
|
LogKit.error(I18nKit.getLocText("Plugin-hdbk_Expired"));
|
||
|
return Primitive.ERROR_VALUE;
|
||
|
}
|
||
|
if (args.length < 1) {
|
||
|
return Primitive.ERROR_VALUE;
|
||
|
}
|
||
|
try {
|
||
|
double z = Double.parseDouble(Utils.objectToString(args[0]));
|
||
|
NormalDistribution normalDistributioin = new NormalDistribution(0, 1);
|
||
|
double result = normalDistributioin.cumulativeProbability(z);
|
||
|
result = new BigDecimal(result).setScale(9, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||
|
return result;
|
||
|
} catch (Exception e) {
|
||
|
LogKit.error(e.getMessage(), e);
|
||
|
return Primitive.ERROR_VALUE;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public Type getType() {
|
||
|
return OTHER;
|
||
|
}
|
||
|
}
|