Exemplo n.º 1
0
            /// <summary>
            /// Конструктор по одному из основных распределений с двумя аргументами
            /// </summary>
            /// <param name="Type"></param>
            /// <param name="m"></param>
            /// <param name="D"></param>
            public ConRandVal(BasisDistribution Type, double m, double D)
            {
                switch (Type)
                {
                //Нормальное распределение
                case BasisDistribution.Normal:
                    this.f = (double s) => { return(1.0 / Math.Sqrt(1 * Math.PI * D) * Math.Exp(-1.0 / 2 / D * (s - m) * (s - m))); };
                    this.m = m;
                    this.d = D;
                    this.F = (double x) => { return(FuncMethods.DefInteg.Simpson((double t) => { return Math.Exp(-t * t / 2); }, 0, x)); };
                    return;

                //Равномерное распределение
                case BasisDistribution.Uniform:
                    this.f = (double s) => { return(1.0 / (D - m)); };
                    this.m = (D + m) / 2;
                    this.d = (D - m) * (D - m) / 12;
                    this.F = (double s) =>
                    {
                        if (s < m)
                        {
                            return(0);
                        }
                        if (m < s && s <= D)
                        {
                            return((s - m) / (D - m));
                        }
                        return(1);
                    };
                    return;

                //Распределение Пуассона
                case BasisDistribution.Puasson:
                    int    m_new = (int)m;
                    double tmp   = Math.Exp(-D);
                    this.f = (double s) => { return(Math.Pow(D, m_new) / Combinatorik.P(m_new) * tmp); };
                    this.m = D;
                    this.d = D;
                    return;

                default:
                    throw new Exception("Такого конструктора не существует");
                }
            }
Exemplo n.º 2
0
            }                                                //по плотности распределения

            /// <summary>
            /// Конструктор копирования
            /// </summary>
            /// <param name="S"></param>
            public ConRandVal(ConRandVal S)
            {
                this.f = S.f; this.F = S.F; this.x = S.x; this.TypeValue = S.TypeValue;
            }