C#、数値計算 - ポアソン分布(ポアソン分布)の計算方法とソースプログラム

 

システムを使用する;

namespace Legalsoft.Truffer
{     public class Poissondist : Gamma     {         private double lam { get; セット; }


        public Poissondist(double llam)
        {             this.lam = llam;             if (lam <= 0.0)             {                 throw new Exception("ポアソンド主義の悪いラム");             }         }





        public double p(int n)
        {             if (n < 0)             {                 throw new Exception("ポアソンディストの悪い n");             return             Math.Exp(-lam + n * Math.Log(lam) - Globals.gammln(n + 1.0));         }





        public double cdf(int n)
        {             if (n < 0)             {                 throw new Exception("ポアソンディストの悪い n");             if             (n == 0)             {                 0.0 を返します。             gammq((double)n, lam) を返します             。         }









        public int invcdf(double p)
        {             int inc = 1;             if (p <= 0.0 || p >= 1.0)             {                 throw new Exception("ポアソンディストの悪い p");             if             (p < Math.Exp(-lam))             {                 0 を返します。             int n = (int)Math.Max(Math.Sqrt (             lam), 5.0);             int nl;             int nu;             if (p < cdf(n))             {                 do                 {                     n = Math.Max(n - inc, 0);                     inc *= 2;


















                while (p < cdf(n));
                nl = n;
                nu = n + 増加 / 2;
            }
            else
            {                 do                 {                     n += inc;                     inc *= 2;                 while (p > cdf(n));                 nu = n;                 nl = n - 増加 / 2;             }             while (nu - nl > 1)             {                 n = (nl + nu) / 2;                 if (p < cdf(n))                 {                     nu = n;                 その他                 _
















                {                     nl = n;             nlを                 返し             ます。         } }     }







 

おすすめ

転載: blog.csdn.net/beijinghorn/article/details/131988633