|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.10.2014, 09:55 | #1 |
Регистрация: 09.10.2014
Сообщений: 4
|
Создать рандомный массив без повторений элементов
DevC++. Программа на Си. Хочу реализовать вариант, когда каждый раз при создании элемента массива функция пробегала массив сначала и искала совпадения. При нахождении совпадения элемент рандомизируется еще раз и так, пока совпадения не будут исключены.
Соответственно если рандомизация будет происходить в диапазоне от 0 до 20, то массив 7x3 должен получиться без повторений. Не могу найти ошибки в коде. В массиве всегда присутствуют совпадения. В чем дело? Код:
Последний раз редактировалось KYZ; 09.10.2014 в 09:58. |
09.10.2014, 10:05 | #2 |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Хватит фигнёй заниматься. Если тебе надо, чтобы в массиве были неповторяющиеся случайные элементы от 0 до N - 1, то:
1. заполнить массив элементами, значения которых равны индексу. 2. тщательно перемешать элементы перестановками (чем больше перестановок, тем круче). Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
09.10.2014, 10:21 | #3 |
Регистрация: 09.10.2014
Сообщений: 4
|
Впоследствии мне необходимо будет накладывать много условий на "рандомизацию".
Потом каждый элемент будет не интом, а структурой, в которой будет много свойств, по которым будет определяться положение элемента. Например, некоторые элементы должны будут располагаться только в первом столбце, некоторые должны будут отсутствовать до определенной строки. При моем подходе достаточно будет лишь на этапе подбора и вставки элемента в массив добавить несколько условий и рандомизировать, пока все условия не будут выполнены. Даже представить сложно как я буду прописывать эти условия при "перемешивании". |
09.10.2014, 10:25 | #4 | |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Цитата:
Соблюди эти условия при заполнении массива, до перемешивания. Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
|
09.10.2014, 10:36 | #5 |
Регистрация: 09.10.2014
Сообщений: 4
|
А как тогда потом делать перестановки? Организовывать несколько перемешиваний для каждых "категорий" элементов (например, для каждого столбца по отдельности и так далее)?
|
09.10.2014, 10:45 | #6 | |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Цитата:
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
|
09.10.2014, 10:47 | #7 |
Регистрация: 09.10.2014
Сообщений: 4
|
Спасибо, буду думать над этим вариантом исполнения
|
09.10.2014, 11:53 | #8 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
|
09.10.2014, 11:54 | #9 | |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
Цитата:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
СИ: Задан массив, состоящий из целых положительных и отрицательных чисел. Создать новый массив из положительных элементов старого | Любимая | Помощь студентам | 0 | 28.05.2013 18:44 |
Получить массив из элементов, встречающихся в исходном массиве ровно один раз без повторений | Shikarmo4000 | Помощь студентам | 0 | 25.05.2010 01:27 |
создать в файле рандомный двумерный массив | loon | Помощь студентам | 2 | 25.06.2008 08:32 |
Массив без повторений | Uzenec | Помощь студентам | 2 | 17.01.2008 08:23 |
Генерировать массив без повтора значений элементов. На (С.) | Raptor | Помощь студентам | 5 | 17.12.2007 14:42 |