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

Как создать двухмерный массив с рандомом?

20.08.2017, 00:00. Показов 886. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
ребят как создавть двухмерный массив с рандомом 9х9 где допустим буду вводить 4 и в консоле будет результат

0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 5 0 0 0 0 0
0 2 0 0 0 0 0 0 0
0 0 0 0 0 0 6 0 0
0 0 0 0 0 0 0 0 0
0 0 0 4 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0

тоисть где угодно любые числа с рандомом
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.08.2017, 00:00
Ответы с готовыми решениями:

Как создать двухмерный, статический массив
Как создать двухмерный, статический массив, чтобы в него можно было вставить и числа, и символы?

Как создать динамический двухмерный массив?
Количество элементов в массиве не известно и оно может изменяться.

Как создать двухмерный динамический массив на Java?
подскажите плиз, каким приблизительным методом можно создать двухмерный динамический массив

6
 Аватар для RunningMan
278 / 186 / 75
Регистрация: 12.04.2017
Сообщений: 1,088
Записей в блоге: 2
20.08.2017, 00:49
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        const int ROW = 9;
        const int COL = 9;
        Random rand = new Random();
        int[,] myArray = new int[ROW, COL];
 
        if (!int.TryParse(Console.ReadLine(), out int num) || num > ROW * COL)
        
            Console.WriteLine("Input error.");
            else
            {
                for (int i = 0; i < num; i++)
                    myArray[rand.Next(0, ROW), rand.Next(0, COL)] = rand.Next(1, 100);
                for (int i = 0; i < myArray.GetLength(0); i++)
                {
                    for (int j = 0; j < myArray.GetLength(1); j++)
                        Console.Write($"{myArray[i, j]} ");
                    Console.WriteLine();
                }
            }
0
44 / 45 / 41
Регистрация: 28.06.2017
Сообщений: 133
20.08.2017, 23:22
RunningMan, как Вы думаете, какой будет результат, если например выбрать массив 4 на 4 и ввести 15 ячеек для заполнения?
1
 Аватар для RunningMan
278 / 186 / 75
Регистрация: 12.04.2017
Сообщений: 1,088
Записей в блоге: 2
20.08.2017, 23:40
Taurusfk, спасибо что увидел, потом приду исправлю
0
44 / 45 / 41
Регистрация: 28.06.2017
Сообщений: 133
20.08.2017, 23:54
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
            int cols = 10;  // Количество столбцов
            int rows = 10;  // Количество строк
            int n = 99;    // Количество ячеек заполнения
            int count = 0;
            Random rnd = new Random();
            int tmpX, tmpY;
            int[,] mass = new int[cols, rows];
            // Переменная указывающая количество реальных итераций
            int realIteration = 0;
            do
            {
                tmpX = rnd.Next(0, cols);
                tmpY = rnd.Next(0, rows);
                realIteration++;
                if (mass[tmpX, tmpY] == 0)
                {
                    mass[tmpX,tmpY] = rnd.Next(1, 100);
                    count++;
                }            
            } while (count < n);
            // Вывод массива
            for (int j = 0; j < rows; j++)
            {
                for (int i = 0; i < cols; i++)
                {
                    Console.Write("{0}\t", mass[i, j]);
                }
                Console.WriteLine();
            }
            Console.WriteLine("\n RealIteration = {0}",realIteration);
            Console.WriteLine("Press any key to continue...");
            Console.ReadKey();
Сам алгоритм рабочий, НО не оптимален, поскольку, если задаться целью заполнить массив 1000х1000 и заполнить случайными значениями 999 999 ячеек, то будет печалька на последних незаполненных ячейках. Программа методом тыка долго будет попадать в незаполненные ячейки. Если нет такой цели. то для маленьких массивов самое то))) Ввел переменную
C#
1
int realIteration = 0;
для отображения реального количества итераций поиска пустых ячеек.

Доделать ручной ввод данных и их проверку, думаю не составит труда?)
0
 Аватар для RunningMan
278 / 186 / 75
Регистрация: 12.04.2017
Сообщений: 1,088
Записей в блоге: 2
21.08.2017, 05:03
Вместо
C#
1
2
for (int i = 0; i < num; i++)
 myArray[rand.Next(0, ROW), rand.Next(0, COL)] = rand.Next(1, 100);
вот это
C#
1
2
3
4
5
6
7
8
9
10
                var hset = new HashSet<System.Tuple<int, int>>();
                while (hset.Count < num)
                {
                    var pair = new System.Tuple<int, int>(rand.Next(0, ROW), rand.Next(0, COL));
                    if (!hset.Contains(pair))
                    {
                        hset.Add(pair);
                        myArray[pair.Item1, pair.Item2] = rand.Next(1, 100);
                    }
                }
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
21.08.2017, 09:56
Как вариант, с использованием небезопасного кода:
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
int[,] field = new int[9, 9];
var r = new Random();
 
// Считывание количества ячеек для заполнения
int n;
do Console.Write("n = ");
while (!int.TryParse(Console.ReadLine(), out n) || n < 0 || n > field.Length);
 
fixed (int* ptr = field)
{
    // Заполнение первых n ячеек случайными числами
    for (int i = 0; i < n; i++)
        ptr[i] = r.Next(1, 10);
 
    // Перемешивание массива
    int k = field.Length;
    while (k > 0)
    {
        int j = r.Next(k--);
 
        int t = ptr[k];
        ptr[k] = ptr[j];
        ptr[j] = t;
    }
}
 
// Вывод
for (int i = 0; i < field.GetLength(0); i++)
{
    for (int j = 0; j < field.GetLength(1); j++)
        Console.Write(field[i, j] + " ");
    Console.WriteLine();
}
Первые n ячеек массива заполняются случайными числами, потом весь массив перемешивается.
Сложность O(2n) по времени: обход на заполнение и обход на перемешивание; и О(1) по памяти.

Пользуемся тем фактом, что многомерный массив в памяти располагается так же, как одномерный массив и работаем с указателем на него как с обычным массивом.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.08.2017, 09:56
Помогаю со студенческими работами здесь

Создать двумерный массив заполнить его рандомом
Помогите с задачей, Cоздать двумерный массив заполнить его рандомом, и обработать след образом для четных чисел заменить на 0, для нечетных...

Как создать двухмерный динамический массив типа double
Погуглил, посмотрел на форуме, нашёл способ создания квадратной матрицы, а вот MxN не нашёл( 1)Верно ли, что квадратная задаётся так:...

Массив: Создать двухмерный массив 7х7 и сделать две диагонали из единиц.
Нужно создать двухмерный массив 7х7. И сделать две диагонали из единиц. Использовать можно только 3 цикла. Вот мой код, мне кажется я...

Массив: Создать двухмерный массив Р[3,5], где каждая строка соответствует заданному массиву...
Из трех одномерных массивов А,В, С создать двухмерный массив Р, где каждая строка соответствует одномерному массиву

Создать двухмерный массив
только начал учить программирование, помогите с кодом, пожалуйста. как создать двумерный массив 3 на 3


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
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. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru