Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
1 / 1 / 0
Регистрация: 03.04.2015
Сообщений: 128

Перемешать двумерный массив

12.12.2016, 13:23. Показов 3950. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Я воспользовался поиском по форуму и нашёл код для перемешивания двумерного массива. Подстроил его в свой код, но ничего не получилось. Помогите пожалуйста, если не трудно. Спасибо.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Game
{
    class Program
    {
        static void Main()
        {
            int[,] deck = new int[13, 4];
            int counter = 0;
            string rank = "";
            string suit = "";
 
            Random random = new Random();
 
            for (int tempRank = 0; tempRank < 13; tempRank++)
                for (int tempSuit = 0; tempSuit < 4; tempSuit++)
                {
                    deck[tempRank, tempSuit] = counter++;
 
                    if (tempRank == 0) rank = "2";
                    if (tempRank == 1) rank = "3";
                    if (tempRank == 2) rank = "4";
                    if (tempRank == 3) rank = "5";
                    if (tempRank == 4) rank = "6";
                    if (tempRank == 5) rank = "7";
                    if (tempRank == 6) rank = "8";
                    if (tempRank == 7) rank = "9";
                    if (tempRank == 8) rank = "10";
                    if (tempRank == 9) rank = "J";
                    if (tempRank == 10) rank = "Q";
                    if (tempRank == 11) rank = "K";
                    if (tempRank == 12) rank = "A";
 
                    if (tempSuit == 0) suit = "c";
                    if (tempSuit == 1) suit = "h";
                    if (tempSuit == 2) suit = "s";
                    if (tempSuit == 3) suit = "d";
 
                    Console.Write("{0}{1} \t", rank, suit);
                }
 
            Console.WriteLine("\n");
            Console.WriteLine("\n");
 
            for (int tempRank = 0; tempRank < 13; tempRank++)
                for (int tempSuit = 0; tempSuit < 4; tempSuit++)
                {
                    int a = deck[tempRank, tempSuit];
                    int b = random.Next() % 4;
                    deck[tempRank, tempSuit] = deck[b, tempSuit];
                    deck[b, tempSuit] = a;
 
                    Console.Write("{0}{1} \t", rank, suit);
                }
 
            Console.ReadKey();
        }
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.12.2016, 13:23
Ответы с готовыми решениями:

Перемешать двумерный строковый массив!
Есть массив public string massKart = new string; я его заполняю вот этими массивами protected string rang = new string {...

Перемешать массив
Здравствуйте! Я новичок. Я пытаюсь понять, как перемешивается массив. Помогите разобраться пожалуйста. Правильно ли я понимаю? ...

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

3
907 / 664 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
12.12.2016, 13:30
yellyex, у вас в последнем цикле rank и suit никак не меняются. Какими остались после последнего цикла, так и выводятся.
1
1 / 1 / 0
Регистрация: 03.04.2015
Сообщений: 128
12.12.2016, 13:43  [ТС]
Нет не получилось :*(
Добавлено через 28 секунд
TopLayer, спасибо и Вам.

Добавлено через 50 секунд
Буду разбираться.

Добавлено через 1 минуту
TopLayer, вот последний код. Буду думать.

Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Game
{
    class Program
    {
        static void Main()
        {
            int[,] deck = new int[13, 4];
            int counter = 0;
            string rank = "";
            string suit = "";
 
            Random random = new Random();
 
            for (int tempRank = 0; tempRank < 13; tempRank++)
                for (int tempSuit = 0; tempSuit < 4; tempSuit++)
                {
                    deck[tempRank, tempSuit] = counter++;
 
                    if (tempRank == 0) rank = "2";
                    if (tempRank == 1) rank = "3";
                    if (tempRank == 2) rank = "4";
                    if (tempRank == 3) rank = "5";
                    if (tempRank == 4) rank = "6";
                    if (tempRank == 5) rank = "7";
                    if (tempRank == 6) rank = "8";
                    if (tempRank == 7) rank = "9";
                    if (tempRank == 8) rank = "10";
                    if (tempRank == 9) rank = "J";
                    if (tempRank == 10) rank = "Q";
                    if (tempRank == 11) rank = "K";
                    if (tempRank == 12) rank = "A";
 
                    if (tempSuit == 0) suit = "c";
                    if (tempSuit == 1) suit = "h";
                    if (tempSuit == 2) suit = "s";
                    if (tempSuit == 3) suit = "d";
 
                    Console.Write("{0}{1} \t", rank, suit);
                }
 
            Console.WriteLine("\n");
            Console.WriteLine("\n");
 
            for (int tempRank = 0; tempRank < 13; tempRank++)
                for (int tempSuit = 0; tempSuit < 4; tempSuit++)
                {
                    int a = deck[tempRank, tempSuit];
                    int b = random.Next() % 4;
                    deck[tempRank, tempSuit] = deck[b, tempSuit];
                    deck[b, tempSuit] = a;
 
                    if (tempRank == 0) rank = "2";
                    if (tempRank == 1) rank = "3";
                    if (tempRank == 2) rank = "4";
                    if (tempRank == 3) rank = "5";
                    if (tempRank == 4) rank = "6";
                    if (tempRank == 5) rank = "7";
                    if (tempRank == 6) rank = "8";
                    if (tempRank == 7) rank = "9";
                    if (tempRank == 8) rank = "10";
                    if (tempRank == 9) rank = "J";
                    if (tempRank == 10) rank = "Q";
                    if (tempRank == 11) rank = "K";
                    if (tempRank == 12) rank = "A";
 
                    if (tempSuit == 0) suit = "c";
                    if (tempSuit == 1) suit = "h";
                    if (tempSuit == 2) suit = "s";
                    if (tempSuit == 3) suit = "d";
 
                    Console.Write("{0}{1} \t", rank, suit);
                }
 
            Console.ReadKey();
        }
    }
}


Добавлено через 55 секунд
Вообще меня интересует логика перемешивания двумерного массива. Мне нужно, чтобы ранки перемешивались с ранками, а масти с мастями, а не между собой, как у меня тут.

Добавлено через 7 минут
А можно как-то воспользоваться уже готовым массивом, а не делать новый?
0
11 / 11 / 8
Регистрация: 04.06.2015
Сообщений: 39
13.12.2016, 12:46
У меня так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
static void Main()
        {
            string[] rank = { "2", "3", "4", "5", "6", "7", "8", "9", "10", "Q", "J", "K", "A"};
            string[] suit = { "c", "h", "s", "d" };
            string[] tempArr = new string[52];
            
            for (int i = 0, counter = 0; i < rank.Length; i++)
            {
                for (int j = 0; j < suit.Length; j++)
                {
                    tempArr[counter] = (rank[i] + suit[j]); counter++;
                    Console.Write(rank[i] + suit[j] + "\t");
                }
            }
            Console.WriteLine("\n");
            
            Shuffle(tempArr);
 
            Console.ReadKey();
        }
 
        public static void Shuffle(string[] array)
        {
            var random = new Random();
            for (int i = array.Length - 1; i >= 0; i--)
            {
                int j = random.Next(i);
                var t = array[i];
                array[i] = array[j];
                array[j] = t;
                Console.Write(array[i] + "\t");
            }
        }
Цитата Сообщение от yellyex Посмотреть сообщение
Мне нужно, чтобы ранки перемешивались с ранками, а масти с мастями, а не между собой
Тогда могут получится одинаковые карты, если я правильно понял
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.12.2016, 12:46
Помогаю со студенческими работами здесь

Перемешать случайным образом массив целых чисел
Здравствуйте! Подскажите, пожалуйста, как в C# перемешать случайным образом массив целых чисел. Аналог random.shuffle(lst) в Python. ...

Как лучше всего перемешать массив, чтобы внутренние элементы остались в том же порядке
Есть такой массив : public static string ARR = new string { { &quot;Row1-Item1&quot;, &quot;Row1-Item2&quot;, &quot;Row1-Item3&quot; }, { &quot;Row2-Item1&quot;,...

Двумерный массив преобразовать в двумерный List<T>
имеется матрица Single matr; Не важно как и откуда я ее заполняю, но на выходе выходит матрица из 4-х столбцов. После мне удобней...

Дан двумерный массив целых чисел размерностью 5 х 6. Сформировать одномерный массив
Дан двумерный массив целых чисел размерностью 5 х 6. Сформировать одномерный массив, каждый элемент которого равен произведению нечетных...

Дан двумерный массив, создать другой массив, строками которого будут диагонали первого массива
Дан двумерный массив, создать другой массив, строками которого будут диагонали первого массива. Задачу решить с помощью классов. Класс...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru