Форум программистов, компьютерный форум CyberForum.ru

Как равномерно заполнить массив - C++

Восстановить пароль Регистрация
 
taimag
0 / 0 / 0
Регистрация: 19.01.2013
Сообщений: 31
16.02.2013, 08:03     Как равномерно заполнить массив #1
Здравствуйте. Пишу сапера. Решил отделить полностью логику от интерфейса. Столкнулся с проблемой равномерного распределения мин по полю. Может кто подсказать как можно равномерно раскинуть мины? Если просто генерировать 10 псевдослучайных чисел то они практически всегда оказываются в начале поля. Буду очень благодарен за словесное описание алгоритма без кода. Заранее спасибо.

Добавлено через 2 часа 8 минут
На ответах подсказали.
Если кому интересно -

Ну обычное дискретное равномерное распределение.
Пусть N, M -- ширина и высота поля соответственно.
Тогда:
1) генерируем число i от 1 до N*M;
2) если в i-ой ячейке поля уже есть мина, тогда идем к пункту 1;
3) устанавливаем мину в i-ую ячейку;
4) увеличиваем счеткик установленных мин
5) если счетчик не достиг максимального числа мин, то идем к пункту 1
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.02.2013, 08:03     Как равномерно заполнить массив
Посмотрите здесь:

Как заполнить массив слов? C++
Как заполнить такой массив C++
C++ как заполнить массив
Как заполнить массив! C++
как заполнить массив N*N ? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
magistr011
 Аватар для magistr011
6 / 6 / 0
Регистрация: 22.10.2011
Сообщений: 164
16.02.2013, 11:28     Как равномерно заполнить массив #2
Правильно ведь массив в памяти это просто строчка длинной M*N, но кроме мин Вам нужно в клетках ещё подсказки, в виде цифр "сколько мин вокруг клетки" (По моему в сапёре такое есть.) Это примерно по такому же принципу,только привязка будет к минам, а не к строке. Клетки ведь не только в ряд, а ещё и сверху и снизу...
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11838 / 6817 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 1
16.02.2013, 11:45     Как равномерно заполнить массив #3
Цитата Сообщение от taimag Посмотреть сообщение
Если просто генерировать 10 псевдослучайных чисел то они практически всегда оказываются в начале поля.
Когда писал свой сапер, нормально все было с таким распределением. Наверное, что-то Вы не так делаете
zverek
2 / 1 / 0
Регистрация: 18.04.2012
Сообщений: 22
16.02.2013, 11:58     Как равномерно заполнить массив #4
1) Разбиваем наше поле на ячейке, количество которых равно количеству бомб.
2) В каждой полученной ячейке размещаем мину.
Возможно так.

p.s. всегда злился, когда в первой нажатой клетке была бомба. Попробуйте избежать таких случайностей)
iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 30.07.2010
Сообщений: 5,297
16.02.2013, 12:54     Как равномерно заполнить массив #5
zverek, так обычно рандомят уже после выбора первой клетки, запрещая бросать на неё мины.
taimag
0 / 0 / 0
Регистрация: 19.01.2013
Сообщений: 31
16.02.2013, 15:40  [ТС]     Как равномерно заполнить массив #6
Всем спасибо. Пишу дальше. Решил написать просто для себя. Если все получится - можно будет легко переместить на мою читалку Amazon Kindle Touch 4. Консольные программы я уже писал под АРМ. Вот теперь если всю логику отдельно сделать, то думаю интерфейс можно будет легко куда и где угодно запустить.
Yandex
Объявления
16.02.2013, 15:40     Как равномерно заполнить массив
Ответ Создать тему
Опции темы

Текущее время: 17:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru