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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2016, 22:09   #1
Evil_Net
Пользователь
 
Регистрация: 04.08.2015
Сообщений: 48
Печаль Равномерное заполнение двумерного массива

Уже несколько дней ломаю голову над задачей, не получается сделать так как хотелось бы.
Задача собственно заключается вот в чем: есть двумерный массив
Код:
a : array [0..9, 0..9] of integer;
Который служит для вывода некой информации в таблицу 10 на 10.
Сначала записываю в него циклом одинаковые значения, допустим "0". Дальше необходимо равномерно! в рандомных местах поставить 10 раз "1". Какой только код не приходил на ум, чаще всего значения находятся рядом друг с другом (в соседних строках, столбцах), т.е. кучность получается. Хотелось бы чтобы равномернее распределялось по полю 10 на 10, с небольшим допущением, что некоторые "1" будут стоять рядом.
Evil_Net вне форума Ответить с цитированием
Старый 08.04.2016, 22:19   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

i:=Random(10)
j:=Random(10)
в цикле пока 10 не совпадающих пар получится
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.04.2016, 22:33   #3
Evil_Net
Пользователь
 
Регистрация: 04.08.2015
Сообщений: 48
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
i:=Random(10)
j:=Random(10)
в цикле пока 10 не совпадающих пар получится
в том то и дело, что я так делаю, результат не нравится
Код:
  for i := 1 to 10 do
    for j := 1 to 10 do
      arr[i,j] := 0;
  m := 0;
  Randomize;
  repeat
    Row := Random(10) + 1;
    Col := Random(10) + 1;
    if (arr[Row,Col] = 0) then
      begin
        arr[Row,Col] := 1;
        Inc(m);
      end;
  until m = 10;
Evil_Net вне форума Ответить с цитированием
Старый 09.04.2016, 08:09   #4
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

нарисуй и покажь, чо добиться надо.
а то я нихрена не понял.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 09.04.2016, 10:50   #5
Evil_Net
Пользователь
 
Регистрация: 04.08.2015
Сообщений: 48
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
нарисуй и покажь, чо добиться надо.
а то я нихрена не понял.
Привожу четыре примера с квадратом 9 на 9.
В первом квадрате большинство значений оказалось в верхней части и рядом друг с другом.
Во втором квадрате тоже находятся недалеко друг от друга, при этом по разным сторонам квадрата, в центре практически нету.
В третьем квадрате что-то более менее, но есть рядом стоящие.
В четвертом квадрате, вообще скучковались все.

Хотелось бы равномерного распределения "1" по всей площади квадрата.
Изображения
Тип файла: jpg пример.jpg (32.7 Кб, 128 просмотров)
Evil_Net вне форума Ответить с цитированием
Старый 09.04.2016, 10:53   #6
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Хотелось бы равномерного распределения "1" по всей площади квадрата.
в шахматном порядке?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 09.04.2016, 11:15   #7
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

предложу СВОЕ понимание "равномерного" распределения 10 единиц в квадрате 10х10.
по одной единичке в каждой строке и колонке.
или же число единиц в каждой строке и каждой колонке ~одинаково (обобщение предыдущего условия).
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 09.04.2016, 11:18   #8
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

в любом случае нужна матмодель. программирование - дело техники.
формулу давай.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 09.04.2016, 15:24   #9
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
в любом случае нужна матмодель. программирование - дело техники.
формулу давай.
Да какая тут формула. Это же Судоку только в двоичном виде.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 09.04.2016, 15:30   #10
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Да какая тут формула. Это же Судоку только в двоичном виде.
сразу видно мнение специалиста.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заполнение двумерного массива словами Valsher Помощь студентам 10 21.12.2015 21:43
Ручное заполнение двумерного массива BloodyRaven Общие вопросы C/C++ 3 03.11.2012 13:33
Заполнение двумерного массива pisikaker Паскаль, Turbo Pascal, PascalABC.NET 2 15.05.2011 10:01
заполнение двумерного массива katena88 Общие вопросы Delphi 1 14.12.2010 14:15
Заполнение двумерного массива (Delphi 7) Gerard Помощь студентам 3 24.05.2010 22:44