Mischanja
Всегда не хватает времени
118 / 118 / 20
Регистрация: 15.10.2009
Сообщений: 493
|
||||||
1 | ||||||
Рандомное заполнение05.04.2011, 16:25. Просмотров 10303. Ответов 12
Метки нет Все метки)
(
Здравствуйте уважаемые жители форума. По ходу выполнения некоего задания столкнулся с таким вопросом: есть двумерный массив который нужно заполнить рандомно нулями и единицами вот так по коду:
Буду признателен если кто-нибудь скажет как реализовать такое.
0
|
|
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
|
05.04.2011, 16:25 |
Ответы с готовыми решениями:
12
Выполнить рандомное заполнение матриц
Рандомное заполнение динамического двумерного массива |
fasked
![]() |
|
05.04.2011, 16:43 | 2 |
Можно осуществить это по разному (хотя суть будет одна). Вы можете заранее инициализировать массив нулями, а первые n элементов единицами, затем просто перемешать содержимое. На мой взгляд это самое разумное
![]() Далее Вы можете инициализировать массив единицами и в случайные места вбить необходимое количество нулей (или наоборот). И так далее, вариантов множество.
0
|
Mischanja
Всегда не хватает времени
118 / 118 / 20
Регистрация: 15.10.2009
Сообщений: 493
|
|
05.04.2011, 16:53 [ТС] | 3 |
а как это, перемешать, можно показать на примере?
Добавлено через 6 минут мм, подумал а так вот можно? : заполняем первый ел. рандомом, проверяем сколько единиц, втой, опять проверяем, потом если сумма будет больше нужного мне кол. единиц то заполняем рандомом последний елемент с единицей
0
|
fasked
![]() |
|
05.04.2011, 17:05 | 4 |
Можно конечно, но время выполнения такого алгоритма соответственно тоже случайно.
В STL библиотеке есть алгоритм random_shuffle
0
|
05.04.2011, 17:05 | |
Mischanja
Всегда не хватает времени
118 / 118 / 20
Регистрация: 15.10.2009
Сообщений: 493
|
||||||
05.04.2011, 17:25 [ТС] | 5 | |||||
сделал я вот так как говорил:
0
|
Svid
5 / 5 / 2
Регистрация: 02.03.2011
Сообщений: 40
|
||||||
05.04.2011, 17:40 | 6 | |||||
А можно так извратиться
![]()
1
|
Mischanja
Всегда не хватает времени
118 / 118 / 20
Регистрация: 15.10.2009
Сообщений: 493
|
|
05.04.2011, 17:43 [ТС] | 7 |
0
|
Svid
5 / 5 / 2
Регистрация: 02.03.2011
Сообщений: 40
|
||||||
05.04.2011, 17:45 | 8 | |||||
В принципе, просто на самом деле от него избавиться, заменить его на
0
|
Mischanja
Всегда не хватает времени
118 / 118 / 20
Регистрация: 15.10.2009
Сообщений: 493
|
|
05.04.2011, 17:50 [ТС] | 9 |
у меня почему-то не выполняет условие чтобы единиц было больше н по этой программе.
0
|
Svid
5 / 5 / 2
Регистрация: 02.03.2011
Сообщений: 40
|
||||||
05.04.2011, 18:11 | 10 | |||||
Да, вообще не понятно как меняет...
Сейчас думать буду. Добавлено через 5 минут На самом деле, Вы меня с толку сбили... например, вводим n 25 и он заполняет все 1. У меня условия, чтобы не меньше n, можно сделать больше:
0
|
Mischanja
Всегда не хватает времени
118 / 118 / 20
Регистрация: 15.10.2009
Сообщений: 493
|
|
05.04.2011, 18:19 [ТС] | 11 |
все элементы не меняет и они остаются на своих местах. если задать н=3 и тд то условие что единиц в строке должно быть больше за н все ровно не срабатывает
0
|
Svid
5 / 5 / 2
Регистрация: 02.03.2011
Сообщений: 40
|
||||||
05.04.2011, 20:26 | 12 | |||||
Все, понял проблему:
у меня общее количество 1 в массиве, без привязки к строкам, и если оно меньше n он меняет первый попавшийся 0 на 1. Для количества единиц в строке надо по другому реализовывать, но принцип тот же (считается количество единиц, сравнивается с n если меньше - запускается цикл меняющий нули на единицы). Позже напишу, сейчас убегаю. Добавлено через 1 час 54 минуты Вот теперь по строчкам.
Я правильно в этот раз понял задание: если в строчке массива количество единиц меньше n - нули в этой строчке меняем на единицы до нужного. Соответственно, обмен нулей на единицы в этой строчке никак не коррелирует с остальными строчками??
0
|
fasked
![]() |
||||||
05.04.2011, 20:28 | 13 | |||||
Я не читал код, который был здесь приведен, но старался следовать ходу рассуждений.
0
|
05.04.2011, 20:28 | |
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
|
05.04.2011, 20:28 |
Как переделать рандомное заполнение матрицы на ручной ввод?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |