29 / 1 / 0
Регистрация: 25.02.2020
Сообщений: 82
|
|
1 | |
Замолнить матрицу рандомно так чтобы нулей было в 2 раза больше чем единиц03.04.2020, 13:52. Показов 3556. Ответов 49
Метки массивы c++ (Все метки)
Доброго времени суток.
Подскажите, как заполнить двумерный массив 8х8 случайными числами от 0 до 1, так, чтобы нулей было в 2 раза больше едениц? Как по мне, так эта задача не имеет решения, т.к.: В данном массиве 64 ячейки. Максимальное количество едениц - 21, тогда нулей - 42, общее количество занятых ячеек - 63. Одна ячейка будет пустой. В противном случае будет переполнение массива. Но, если опустить условие о том, чтобы нулей было в 2 раза больше чем едениц, как сделать так, чтобы нулей было всегда больше, чем едениц?
0
|
03.04.2020, 13:52 | |
Ответы с готовыми решениями:
49
Заполнить массив значениями 0 и 1 случайным образом, но чтобы нулей было в два раза больше, чем единиц Заполнить массив случайным образом 0 и 1 так, чтобы кол-во единиц было больше количества нулей Как сделать так чтобы нельзя было вводить больше чем число текущего года? Найти и вывести номер строки в которой единиц больше чем нулей |
Вездепух
11691 / 6370 / 1723
Регистрация: 18.10.2014
Сообщений: 16,053
|
|
04.04.2020, 08:05 | 21 |
Гениально! Вы в качестве решения задачи предложили вольный пересказ условия задачи.
Вопрос фактически в том и состоит, как правильно "добавить рэндомно 21 единицу". Как вы предлагаете это сделать?
0
|
"C with Classes"
|
|
04.04.2020, 09:08 | 22 |
1. Сгенерировать индекс от 0 до 63.
2. Проверить есть ли 1 по указанному индексу. а. Если есть то возвращаемся к шагу 1. б. Если нет то увеличиваем счетчик единиц, пишем единицу в сгенерерированную позицию, 3. Если счетчик равен 21 Стоп, в противном случае возвращаемся к шагу 1.
0
|
Вездепух
11691 / 6370 / 1723
Регистрация: 18.10.2014
Сообщений: 16,053
|
|
04.04.2020, 09:18 | 23 |
Прекрасно. Так вот это тема как раз посвящена тому, чтобы не заниматься подобным верчением на месте "а. Если есть то возвращаемся к шагу 1."
Справедливости ради надо заметить, что такой алгоритм вполне применим и даже является лучшим для генерации маленького количества единиц. А вот использовать такой алгоритм для генерации относительно большого количества единиц - это уже профанация. Где проходит водораздел между "маленьким" и "большим" - отдельная теория.
0
|
29 / 1 / 0
Регистрация: 25.02.2020
Сообщений: 82
|
||||||
22.04.2020, 08:50 [ТС] | 24 | |||||
Коллеги, спасибо за Ваши рекомендации, решил следующим образом (ответ, как обычно, опять лежал на поверхности):
0
|
Вездепух
11691 / 6370 / 1723
Регистрация: 18.10.2014
Сообщений: 16,053
|
|
22.04.2020, 08:58 | 25 |
0
|
2524 / 1244 / 459
Регистрация: 08.11.2016
Сообщений: 3,418
|
||||||
22.04.2020, 10:09 | 26 | |||||
Народ, вы чего?
0
|
Вездепух
11691 / 6370 / 1723
Регистрация: 18.10.2014
Сообщений: 16,053
|
|
22.04.2020, 10:43 | 27 |
0
|
2524 / 1244 / 459
Регистрация: 08.11.2016
Сообщений: 3,418
|
|
22.04.2020, 10:57 | 28 |
Прошляпил условие, а это генератор выдающий ноль с вероятностью 2/3 против 1/3 за единицу, то есть 0 в два раза чаще чем 1.
0
|
661 / 662 / 106
Регистрация: 29.05.2015
Сообщений: 3,965
|
||||||
22.04.2020, 11:01 | 29 | |||||
Нулей будет (приблизительно) в 2 раза больше, чем единиц:
0
|
2524 / 1244 / 459
Регистрация: 08.11.2016
Сообщений: 3,418
|
|
22.04.2020, 11:03 | 30 |
alexu_007, опоздал )))
0
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
|
22.04.2020, 11:07 | 31 |
Он не только опоздал, он неправильно сделал. Точнее, он решил не поставленную задачу.
0
|
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
|
|
22.04.2020, 11:38 | 32 |
значит рекомендации прошли мимо. 21*2=42 (а не 43). как решается эта задача показал Вам выше.
0
|
661 / 662 / 106
Регистрация: 29.05.2015
Сообщений: 3,965
|
|
22.04.2020, 15:55 | 33 |
Не поставленную?
Добавлено через 13 минут Там было про двумерный массив.
0
|
2524 / 1244 / 459
Регистрация: 08.11.2016
Сообщений: 3,418
|
|
22.04.2020, 16:26 | 34 |
0
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
|
22.04.2020, 17:33 | 35 |
Задача не только о том, что массив двумерный, но и о том, что нулей должно оказаться в нём ровно в два раза больше, чем единиц. Не приблизительно, а именно что ровно. Но условие задачи составлено недостаточно точно, поэтому возникает проблема, о которой ТС спрашивал: при условии, что массив [8][8], невозможно записать в массив нулей ровно в два раза больше, чем единиц. Идея задачи в том, что для любого сгенерированного массива [8][8] количество нулей одинаково с количеством нулей, и количество единиц всегда одинаково с количеством единиц каждого, а количество нулей при этом не менее, чем в два раза превышает число единиц, т. е. что 1/3 массива — это единицы, а 2/3 массива — нули.
0
|
693 / 303 / 99
Регистрация: 04.07.2014
Сообщений: 846
|
||||||
22.04.2020, 20:12 | 36 | |||||
про ровно в задании ни слова.
Так что:
0
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
|
22.04.2020, 20:21 | 37 |
В два раза больше — это ровно в два раза больше, это не меньше, чем в два раза больше, и не больше, чем в два раза больше. Не вижу смысла и не буду вступать в диалог со всеми, кто этого не понимает.
0
|
693 / 303 / 99
Регистрация: 04.07.2014
Сообщений: 846
|
|
22.04.2020, 20:25 | 38 |
Ещё немного о задании: 64 не делится на 3. значит нулей не может быть ровно в два раза больше единиц. Что ещё мог иметь в виду автор задачи? Например вероятность выпадения 0 в два раза больше вероятности выпадения 1.
Или ещё вариант.: Кликните здесь для просмотра всего текста
Т.к.
0
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
|
22.04.2020, 20:42 | 39 |
Предложенный способ с действительными числами был уже выбран и предложен Yetti, только это филькина грамота, хотя само решение в таком виде действительно и справедливо должно считаться решением поставленной задачи, в отличие от предложенной генерации a[i][j] = (rand() % 3 > 1) ? 1 : 0;. Так составлено условие, что решение с действительными числами отвечает запросу. А филькина грамота, потому что так можно в 1 ячейку запихнуть единицу, в 2 другие по нулю, а в остальные любые другие числа, после чего ходить с поднятой головой и гордо считать себя программистом: в задании же не сказано, что массив состоит только из нулей и единиц.
0
|
693 / 303 / 99
Регистрация: 04.07.2014
Сообщений: 846
|
|
22.04.2020, 20:43 | 40 |
вот это как раз пример не верного следствия. почему соотношение 24/40 хуже чем 10/54 ?
0
|
22.04.2020, 20:43 | |
22.04.2020, 20:43 | |
Помогаю со студенческими работами здесь
40
Из массива В удалить числа в двоичном представлении которых единиц больше, чем нулей Подсчитать и вывести на экран количество N и номера таких столбцов, в которых нулей больше чем единиц Сгенерируйте серию случайных чисел из 0, 1, 2 так, чтобы количество двоек было равно количеству единиц сделать так чтобы a было больше b Сгенерируйте серию случайных чисел из 0, 1, 2 так, чтобы количество двоек было равно количеству нулей Сгенерируйте серию случайных чисел из 0, 1, 2 так, чтобы количество двоек было равно количеству нулей Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |