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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2013, 20:06   #1
Леопольдовна
Пользователь
 
Регистрация: 03.04.2013
Сообщений: 17
Восклицание функция random для разреженной матрицы c#

У меня имеется класс для работы с разреженной матрицей, а также метод добавления элементов матрицы в список. Будьте добры, подскажите, как заполнить эту матрицу произвольным образом, чтобы в ней содержалось достаточное количество нулей
Леопольдовна вне форума Ответить с цитированием
Старый 29.04.2013, 21:27   #2
No_Comments
Пользователь
 
Регистрация: 03.07.2011
Сообщений: 92
По умолчанию

Может, мой способ слегка извращенный, но я вам предложу следующее:

1. рандомно выбираем количество элементов, которые будут = 0. (При этом проверяем условие, чтобы это кол-во было больше какого-то определенного значения).

2. рандомно выбираем элементы, которые будут равны нулю. (Проверяем, может текущий элемент уже равен нулю. Тогда ищем другой).

3. заполняем остальные элементы матрицы ненулевыми значениями.
No_Comments вне форума Ответить с цитированием
Старый 29.04.2013, 22:06   #3
Леопольдовна
Пользователь
 
Регистрация: 03.04.2013
Сообщений: 17
По умолчанию

неплохая идея, но я не знаю синтаксиса рандома в шарпе(( может, вы знаете, как его объявлять?
Леопольдовна вне форума Ответить с цитированием
Старый 30.04.2013, 15:26   #4
No_Comments
Пользователь
 
Регистрация: 03.07.2011
Сообщений: 92
По умолчанию

Создаем объект класса Random:
Код:
Random rnd = new Random();
Далее нет необходимости создавать еще один объект класса. Можно работать с этим.
1.
Код:
int quantity=rnd.Next(10,21);
Здесь задаем диапазон, из которого выбирается число. При этом 10 входит в интервал, а 20 - нет. Допустим, в матрице 30 элементов, 10х3.
2.
Код:
while(quantity != 0)
{
  int i = rnd.Next(0,11);
  int j = rnd.Next(0,4);
  if (matr[i,j]!=0)
  {
    matr[i,j]=0;
    quantity--;
  } // здесь рандомно выбираем элементы из матрицы
// и если они не равны 0, то присваиваем значение 0, иначе повторяем генерацию 
// случайных индексов элементов
 }
3. Ну а остальные элементы заполнить рандомно значениями несложно:
Код:
 
for (int i=0; i<10; i++)
  for(int j=0; j<3; j++)
   { 
      if(matr[i,j]!=0)
         matr[i,j] = rnd.Next(1, 500);
   }
Вроде как-то так. Могла где-то накосячить с условиями и циклами, но с рандомом вроде правильно!
No_Comments вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
функция для определения размера матрицы Aztek93 Общие вопросы C/C++ 7 12.06.2012 18:42
Как вывести математическую формулу, представляющую переход от разреженной 2-мерной матрицы к одномерному массиву NickolayNest Общие вопросы по Java, Java SE, Kotlin 0 08.03.2012 14:46
Функция Random Викаа-008 Помощь студентам 23 20.12.2010 23:25
Функция Random Ser_arm Помощь студентам 17 26.04.2010 10:23
Системы счисления и функция random hanower Помощь студентам 5 24.04.2010 14:26