Example #1
0
        public Order(Distributions ad, Distributions td)
        {
            ammountDistribution = ad;
            timeDistribution    = td;

            Ammount = NonNegativeValue(new Func <double>(() =>
            {
                switch (ammountDistribution)
                {
                case Distributions.Normal: return(NormalDistribution.OrderSize());

                case Distributions.Poisson: return(PoissonDistribution.OrderSize());

                case Distributions.Exponential: return(ExponentialDistribution.OrderSize());

                case Distributions.UniformCont: return(UniformContDistribution.OrderSize());

                case Distributions.UniformDisc: return(UniformDiscDistribution.OrderSize());

                default: return(-1);
                }
            })());

            Time = NonNegativeValue(new Func <double>(() =>
            {
                switch (timeDistribution)
                {
                case Distributions.Normal: return(NormalDistribution.TimeBetweenOrder());

                case Distributions.Poisson: return(PoissonDistribution.TimeBetweenOrder());

                case Distributions.Exponential: return(ExponentialDistribution.TimeBetweenOrder());

                case Distributions.UniformCont: return(UniformContDistribution.TimeBetweenOrder());

                case Distributions.UniformDisc: return(UniformDiscDistribution.TimeBetweenOrder());

                default: return(-1);
                }
            })());
        }