Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#正态分布实现_C#_Excel_Normal Distribution - Fatal编程技术网

c#正态分布实现

c#正态分布实现,c#,excel,normal-distribution,C#,Excel,Normal Distribution,我需要System.Web.DataVisualization.dll中正态分布函数的C#实现(源代码),我尝试使用github中已有的函数来计算NORM.S.DIST,但它们不准确,并且与excel值不匹配 下面是我使用的代码,对于13.8034040798240017的输入,它给出了1.2664557440189636E-43(几乎为零)。另一方面,excel和DataVisualizationretruns1中的NormalDistribution函数作为结果 public static

我需要
System.Web.DataVisualization.dll
正态分布
函数的C#实现(源代码),我尝试使用github中已有的函数来计算NORM.S.DIST,但它们不准确,并且与excel值不匹配

下面是我使用的代码,对于13.8034040798240017的输入,它给出了1.2664557440189636E-43(几乎为零)。另一方面,excel和
DataVisualization
retruns1中的
NormalDistribution
函数作为结果

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


谢谢

一旦您检查了这样做的法律方面,并且如果没有来自Ms的限制(例如关于许可证类型),那么一旦您检查了这样做的法律方面,并且如果没有来自Ms的限制(例如关于许可证类型),您就可以使用将任何程序集反编译到C#

,然后您可以使用将任何程序集反编译为C#

您提到的两个计算之间的差异可能是由于密度分布和累积分布之间的差异。z值为13.80时,密度函数实际上为0,而累积分布实际上为1。 excel函数NORMAL.S.DISTR(z,累积)允许将此差异指定为参数。 我建议查看这两种实现,以确保它们都是累积的或密度的。 关于其他库,我推荐NuGet包:“MathNet.Numerics”
此包包含多个统计分布的实现。

您提到的两个计算之间的差异可能是由于密度分布和累积分布之间的差异。z值为13.80时,密度函数实际上为0,而累积分布实际上为1。 excel函数NORMAL.S.DISTR(z,累积)允许将此差异指定为参数。 我建议查看这两种实现,以确保它们都是累积的或密度的。 关于其他库,我推荐NuGet包:“MathNet.Numerics”
这个软件包包含几个统计分布的实现。

我找到了一个c#中所有数学公式的开源项目,我想我可以从中派生出我需要的代码。我找到了一个c#中所有数学公式的开源项目,我想我可以从中派生出我需要的代码。