Метод перебора карт в C#

Я делаю бота, который может тестировать некоторые карточные тактики в игре, бот работает, но у меня есть одна проблема. Мой метод встряхивания карты не очень хорош. Я трясу карты так:

        public void ShuffelDeck()
        {
            for (int i = 0; i < 5; i++)
                Cards = ShuffelCards(Cards);
        }

        private ArrayList ShuffelCards(ArrayList Cards)
        {
            ArrayList ShuffedCards = new ArrayList();

            Random SeedCreator = new Random();
            Random RandomNumberCreator = new Random(SeedCreator.Next());

            while (Cards.Count != 0)
            {
                int RandomNumber = RandomNumberCreator.Next(0, Cards.Count);
                ShuffedCards.Insert(ShuffedCards.Count, Cards[RandomNumber]);
                Cards.RemoveAt(RandomNumber);
            }

            return ShuffedCards; 
        }

Проблема в том, что когда я рассчитываю без паузы между процессом встряхивания карты, несколько игроков выиграют много игр. Например

Player 1: 8 games
Player 2: 2 games
Player 3: 0 games
Player 4: 0 games

Но когда я добавляю диалог перед процессом встряски карт, выигрыш распределяется между игроками :

Player 1: 3 games
Player 2: 2 games
Player 3: 1 game
Player 4: 4 games

. Я предполагаю, что класс Random недостаточно хорош для такого грубого перебора. Как я могу перетасовать карты без такой проблемы?

Обновление :Я уже пробовал использовать 1 класс Random, а также пробовал качать карты только один раз.

5
задан Charles 25 July 2012 в 21:50
поделиться