Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
taimag
0 / 0 / 0
Регистрация: 19.01.2013
Сообщений: 31
#1

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

16.02.2013, 08:03. Просмотров 888. Ответов 5
Метки нет (Все метки)

Здравствуйте. Пишу сапера. Решил отделить полностью логику от интерфейса. Столкнулся с проблемой равномерного распределения мин по полю. Может кто подсказать как можно равномерно раскинуть мины? Если просто генерировать 10 псевдослучайных чисел то они практически всегда оказываются в начале поля. Буду очень благодарен за словесное описание алгоритма без кода. Заранее спасибо.

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

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

Как заполнить массив! - C++
Приветствую Вас друзья! Кто знает подскажите как заполнить массив, числами с плавающей запятой. объявляю: float mas; ...

как заполнить массив - C++
как заполнить массив состоящий из определенного числа элементов

Как заполнить массив - C++
Доброго времени суток, подскажите, как записать данные в такой массив? map<string, map<int, float>> map;

Как заполнить такой массив - C++
Есть задача создать и заполнить массив вида int massiv числами от 1 до 13 в каждом элементе массива должно быть 5 цифр от...

Как заполнить массив в цикле? - C++
Добрый день, каким образом можно заполнить массив размера n, числами от 1 до n по порядку? Как самому заполнить - это понятно, а как...

Как заполнить массив слов? - C++
Есть двумерный динамический массив строк. Надо занести в каждую строку v при создании слово наподобии как с обычным массивом. char...

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

p.s. всегда злился, когда в первой нажатой клетке была бомба. Попробуйте избежать таких случайностей)
0
iama
1250 / 975 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
16.02.2013, 12:54 #5
zverek, так обычно рандомят уже после выбора первой клетки, запрещая бросать на неё мины.
0
taimag
0 / 0 / 0
Регистрация: 19.01.2013
Сообщений: 31
16.02.2013, 15:40  [ТС] #6
Всем спасибо. Пишу дальше. Решил написать просто для себя. Если все получится - можно будет легко переместить на мою читалку Amazon Kindle Touch 4. Консольные программы я уже писал под АРМ. Вот теперь если всю логику отдельно сделать, то думаю интерфейс можно будет легко куда и где угодно запустить.
0
16.02.2013, 15:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2013, 15:40
Привет! Вот еще темы с ответами:

Как заполнить массив рандом? - C++
Как заполнить масив рандом в c++ Visual studio 2010 ?

Как заполнить двумерный массив? - C++
У меня есть массив for(int i = 0; i < x; i++) { for(int j = 0; j < y; j++) { // какие-то действия ...

Как заполнить двумерный динамический массив? - C++
вот я создал двумерный динамический массив (правильно надеюсь): int row=2; for (int i=0; i<dl; i++){if ('!'==str){row+=1;}}; int...

Как заполнить массив wchar_t пробелами - C++
Пробовал вот так: int length = 4; wchar_t* str = new wchar_t; FillMemory(str, length,L' '); str = L'\0'; wprintf(L"%s!", str); ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru