Метод перемешивания (перетасовки) всех карт - C#

Узнай цену своей работы

Формулировка задачи:

Метод перезаписывает случайные ячейки из первого в новый массив. А затем копирует его в старый.
        public void Shuffle()
        {
            Random r = new Random();
            string []NewCardDeck = new string[length];
            for (int i = 0; i < length; ++i)
            {
                string sCard = MasCardDeck[r.Next(0, length - 1)];
                while (NewCardDeck.Contains(sCard))
                {
                    sCard = MasCardDeck[r.Next(0, length - 1)];
                }
                NewCardDeck[i] = sCard;
            }
            NewCardDeck.CopyTo(MasCardDeck, 0);
        }
Последний номер постоянно null. В чем ошибка?

Решение задачи: «Метод перемешивания (перетасовки) всех карт»

textual
Листинг программы
public static class IEnumerableExtensions
{
    private static Random rnd = new Random();
 
    public static IEnumerable<T> Shuffle<T>(this IEnumerable<T> sequence)
    {
        return sequence.OrderBy(item => rnd.Next());
    }
 
    public static IEnumerable<T> Shuffle<T>(this IEnumerable<T> sequence, Func<int> random)
    {
        return sequence.OrderBy(item => random());
    }
}
 
class Program
{
    static void Main(string[] args)
    {
        var rnd = new Random();
        var arr = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
        var shuffled1 = arr.Shuffle().ToArray();
        var shuffled2 = arr.Shuffle(rnd.Next).ToArray();
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.556 из 5
Похожие ответы