Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2014, 12:36   #1
Sergey_gorobets
Пользователь
 
Регистрация: 08.02.2013
Сообщений: 69
По умолчанию Метод Random.Next( int32, int32) C#

Есть двумерный массив размерностью 10х10..В него нужно равномерно поместить случайным образом цифры (0 и 1).Количество "1" должно быть пускай 20

Код:
.....
int[,]mas=new int[10,10];
Random a=new Random();
int col=0; //индекс количества единиц в массиве
   for(int i=0;i<mas.GetLength(0);i++)
{
     for(int j=0; j<mas.GetLength(1);j++)
   {
      mas[i,j]=a.Next(0,2);
      if(mas[i,j]==1)
        {
           col++;
        }
      if(col>20)
       {
         mas[i,j]=0;
       }
    }
}

...
Так вот если использовать этот код и вывести массив, можно увидеть, что заполнение массива не будет равномерным...
Подскажите как поступить чтобы данная задача была реализована в полной мере
Спасибо!!
Sergey_gorobets вне форума Ответить с цитированием
Старый 14.02.2014, 13:29   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Тут ключевой момент - что в вашем понимании значит - "равномерно" ?!!!
И ещё, единиц должно быть СТРОГО 20 и нулей СТРОГО 80 штук?
Тогда я бы пошёл таким путём:
1) заполнил весь массив нулями
2) в цикле получал координаты строки и столбца случайным образом, если по этой позиции стоит ноль - прописывал туда единицу и наращивал счётчик, если там ноль - то переход на начало цикла
3) если счётчик достиг 20 (поставили 20 единиц в массиве) - конец цикла.

как -то так!


p.s. я бы рекомендовал создавать объект класса Random, иницилизированный принудительно:
Код:
Random a = new Random(DateTime.Now.Millisecond);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.02.2014, 13:44   #3
Sergey_gorobets
Пользователь
 
Регистрация: 08.02.2013
Сообщений: 69
По умолчанию

спасибо..Попробую..К массиву кнопок думаю это тоже применительно? (0 и 1) в данном случае есть текст на кнопке..
Sergey_gorobets вне форума Ответить с цитированием
Старый 14.02.2014, 13:51   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Вы, наверное, сапёра пишете?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.02.2014, 13:59   #5
Sergey_gorobets
Пользователь
 
Регистрация: 08.02.2013
Сообщений: 69
По умолчанию

так точно!!!..В сети много готовых решений..Не хочу смотреть. Хочу сам помучиться используя пока известные мне возможности...Поле задал как массив кнопок."0" на кнопке-нет мины, "1"-есть. Щелчком по кнопке получаю координаты и по координатам смотрю текст (0 или 1).Или не получится таким образом работать с кнопками?
Sergey_gorobets вне форума Ответить с цитированием
Старый 14.02.2014, 14:29   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну, скорее всего, получится.
но я бы, на вашем месте отделил мух от котлет: в массиве хранил информацию об игровом поле (где находится мина, где открыта клетка, где не открыта, где флажок стоит и т.д.) и ОТДЕЛЬНО отображение игрового поля (это хоть кнопки, хоть лейблы, хоть грид какой-нибудь). Задача визуального поля получить нужное нажатие и отдать его на обработку. А всё, что можно/нужно сделать - находится в массиве. Там обработали, изменили в массиве,отобразили изменения на визуальном поле.

впрочем, уверен, что вариантов решения может быть множество. В том числе и тот путь, который Вы избрали (игровое поле(массив) и его отбражение совмещены в виде массива кнопок...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.02.2014, 14:43   #7
Sergey_gorobets
Пользователь
 
Регистрация: 08.02.2013
Сообщений: 69
По умолчанию

все получилось..Спасибо большое!!Решение было на поверхности.Спасибо
Sergey_gorobets вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
реализовать метод Эйлера и метод Рунге-Кутте 4-ого порядка на языке С++ Janny2014 Помощь студентам 1 27.11.2013 05:23
Метод перебора, Метод дихотомии, Метод золотого сечения Delphi !!! OneBri Помощь студентам 0 03.10.2012 08:42
Максимальный индекс 1 в битовом виде числа(Int32) Lasur Помощь студентам 5 06.04.2012 22:23
Преобразование Int32 в Дату Dr.Pauliss Помощь студентам 1 27.05.2011 07:28
Turbo Pascal[програмыки : текстовая\метод симпсона\метод половинного деления qsccsq Помощь студентам 7 24.12.2010 05:23