Example #1
0
        }//end loadQueues():int

        /**
         * determines if registrant has finished registering<br>
         *
         * <hr>
         * Date created: Nov 12, 2013<br>
         * Date last modified: Nov 16, 2013<br>
         * <hr>
         * @author Stan Seiferth
         */
        public int CheckDone(int i, double currentTime)
        {
            int        result = -1;
            Registrant temp   = new Registrant();

            if ((whenDone[i] <= currentTime) && (whenDone[i] > 0))
            {
                line[i].Dequeue();
                whenDone[i] = 0;
                if (line[i].Count > 0)
                {
                    temp        = line[i].Peek() as Registrant;
                    whenDone[i] = (temp.ArrTime / 100) + currentTime;
                }
                result = i;
                return(result);
            }
            return(result);
        }//end CheckDone(double):int
Example #2
0
        }//end Events()

        /**
         * determines how long it takes to register for each registrant<br>
         *
         * <hr>
         * Date created: Nov 12, 2013<br>
         * Date last modified: Nov 16, 2013<br>
         * <hr>
         * @author Stan Seiferth
         */
        public void FindTimeInLine(int people, double expected, double shortest)
        {
            double     arrival;
            double     observed;
            double     xSqr;
            double     result = 0;
            Registrant temp;
            Random     time = new Random();

            this.people = people;
            //StreamWriter sw = new StreamWriter("excel.csv");
            registrants = new List <Registrant>();

            for (int i = 0; i < people; i++)
            {
                for (int j = 0; j < 256; j++)
                {
                    observed = time.Next(15, 200);  //cast statistical mojo
                    observed = observed / 10.0;     //make random numbers follow chi square distribution
                    xSqr     = observed - 4.25;
                    result  += (xSqr * xSqr) / 4.25;
                }
                result = (result / 255) - (12.34 + (4.25 - expected)); //adjust average to match user input
                if (result < shortest)                                 //if less than shortest time make shortest time
                {
                    result = shortest;
                }

                arrival = ArrEvent(time.Next(1000));   //find arrival time for individual
                arrival = Math.Round((arrival * EventTimeSpan) + OpenTime, 2);

                temp            = new Registrant(); //make a temporary registrant to hold values
                temp.TimeInLine = result;           //assign time needed to register
                temp.ArrTime    = arrival;          //assign time arrived to register
                registrants.Add(temp);              // add that temporary to list

                //sw.Write(result + ",");Math.Round(, 2)
                result = 0;
            }
            registrants.Sort();
            //SinkSort(registrants);
        }