Метод перемешивания (перетасовки) всех карт - C#
Формулировка задачи:
Метод перезаписывает случайные ячейки из первого в новый массив. А затем копирует его в старый.
Последний номер постоянно null. В чем ошибка?
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); }
Решение задачи: «Метод перемешивания (перетасовки) всех карт»
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(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д