예제 #1
0
        private static Player DefaultEngine(Records records, List <Player> players)
        {
            Player retVal = null;

            //int value = RandNumGenerator.Next() % players.Count;
            int value = GenerateValue(0, players.Count - 1);

            retVal = players[value];
            records.ApplyWinner(retVal);
            players.RemoveAt(value);

            return(retVal);
        }
예제 #2
0
        private static Player CausalityEngine(Records records, List <Player> players)
        {
            Player retVal = null;

            //Create pool of tickets
            List <int> tickets      = new List <int>();
            int        currentIndex = 0;

            foreach (Player player in players)
            {
                if (player.LastWin <= DateTime.Today.AddDays(-28))
                {
                    for (int i = 0; i < 20; ++i)
                    {
                        tickets.Add(currentIndex);
                    }
                }
                else if (player.LastWin <= DateTime.Today.AddDays(-22))
                {
                    for (int i = 0; i < 10; ++i)
                    {
                        tickets.Add(currentIndex);
                    }
                }
                else if (player.LastWin <= DateTime.Today.AddDays(-15))
                {
                    for (int i = 0; i < 5; ++i)
                    {
                        tickets.Add(currentIndex);
                    }
                }
                else
                {
                    tickets.Add(currentIndex);
                }

                currentIndex++;
            }

            //Generate a value based on the size of the pool
            int ticket = GenerateValue(0, tickets.Count - 1);

            //Extract the Winner.
            int winnerIndex = tickets[ticket];

            retVal = players[winnerIndex];
            records.ApplyWinner(retVal);
            players.RemoveAt(winnerIndex);

            return(retVal);
        }