Мне нужна реализация C# (исходный код) функции NormalDistribution
в System.Web.DataVisualization.dll
, я попробовал источник с использованием уже доступных функций из github для вычисления NORM.S.DIST, но они не точны и не соответствуют значениям excel ,C# NormalDistribution implementation
Ниже приведен код, который я использовал, и он дает мне 1.2664557440189636E-43 (почти нулевой) для ввода 13.803404798240017. С другой стороны, excel и функция NormalDistribution
в DataVisualization
извлекают 1 в результате.
public static double NS(double zValue)
{
const double b1 = 0.319381530;
const double b2 = -0.356563782;
const double b3 = 1.781477937;
const double b4 = -1.821255978;
const double b5 = 1.330274429;
const double p = 0.2316419;
const double c = 0.39894228;
if (zValue >= 0.0)
{
double t = 1.0/(1.0 + p * zValue);
return (1.0 - c * Math.Exp(-zValue * zValue/2.0) * t * (t * (t * (t * (t * b5 + b4) + b3) + b2) + b1));
}
else
{
double t = 1.0/(1.0 - p * zValue);
return (c * Math.Exp(-zValue * zValue/2.0) * t * (t * (t * (t * (t * b5 + b4) + b3) + b2) + b1));
}
}
Я попытался ILSpy
увидеть код в DataVisualization.dll
, но не повезло, пожалуйста, предложите, как мы получаем, что исходный код (если это возможно), я думал, что MS имеет открытый исходный код их .Net кодовую базу, но это не относится к все сборки. или есть ли лучший способ рассчитать NORM.S.DIST с хорошей точностью?
Спасибо!
Я нашел проект с открытым исходным кодом для всех математических формул в C#, я думаю, что могу развить код, который мне нужен. – Deepak
Несомненно, если он решает вашу проблему, используйте ее – alainlompo