|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.02.2012, 12:45 | #1 | |
Форумчанин
Регистрация: 10.12.2011
Сообщений: 154
|
Не повторяющиесь случайные строки
Привет ребята.
Я тут забомбил такой вот код: Цитата:
Ребята, будьте добры, помогите пожалуйста. Я буду очень вам благодарен. Заранее спасибо! |
|
21.02.2012, 12:49 | #2 |
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
а Randomize кто ставить будет?
Правильно поставленная задача - три четверти решения.
|
21.02.2012, 12:54 | #3 |
Форумчанин
Регистрация: 10.12.2011
Сообщений: 154
|
|
21.02.2012, 13:33 | #4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
во-первых, Вы зря не воспользовались поиском по форуму - подобные задачи решали на форуме многократно.
во-вторых, существует всего два подхода. Какой выбирать - зависит от конкретных деталей (сколько всего значений имеется, сколько случайных из них надо получить и т.д.). итак, первый способ. получаем очередное случайное число. проверяем, было ли такое значение раньше. Повторяем данный цикл (получить случ.число и проверить было ли оно раньше) до тех пор, пока такое значение было. Как только сгенерировалось такое, какого раньше не было - запоминаем это значение и переходим к следующему. Недостатки метода. Нужна структура, в которой сохраняются сгенерённые ранее случайные числа (в общем случае размерность равна количеству неповторяющихся чисел). При числе неповторяющихся случайных величин равному (или близкому) к общему числу имеющихся для выбора вариантов алгоритм может сильно "тупить" - он постоянно будет попадать на варианты, которые были раньше. поэтому, если число вариантов, из которых надо выбрать, ограничено, то я бы предложил Вам другой, более эффективный способ. берём массив, равный числу вариантов. заполняем его значениями от 1-го индекса до максимального, перемешиваем числа в этом массиве. берём от начала массива нужно число значений (они будут и случайными в силу перемешивания, и гарантированно неповторяющимися, т.к. изначально массив был заполнен неповторяющимися значениями). всё. задача решена. добавлено по поводу нужный тем тут, на форуме... например, вот, для затравки две темы. там есть примеры кода http://www.programmersforum.ru/showthread.php?t=38802 http://www.programmersforum.ru/showthread.php?t=106614 Последний раз редактировалось Serge_Bliznykov; 21.02.2012 в 13:41. |
21.02.2012, 14:16 | #5 |
Форумчанин
Регистрация: 10.12.2011
Сообщений: 154
|
Ай не, не получается. Вся загвоздка в том, что у меня строки, а не просто числа. И по этому у меня ни чего не выходит.
Может у кого-то есть еще хоть какие нибудь варианты. |
21.02.2012, 14:23 | #6 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Цитата:
вот от него и пляшите! рекомендую применить второй способ (с заполнением и перемешиванием массива) |
||
21.02.2012, 14:50 | #7 |
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
я бы добавил ещё третий способ:
1) копируем список в отдельный список (если важно сохранить изначальный текст) 2) находим случайную строку и добавляем в список результата 3) удаляем эту строку из исходного списка 4) выполняем с п.2. пока в исходном списке есть строки. например так: Код:
Правильно поставленная задача - три четверти решения.
|
21.02.2012, 19:28 | #8 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
первое.
glebast, объясните мне это чудо чудное: Цитата:
вот пример решения вашей проблемы через использования массива с перемешиванием: Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Случайные числа | Toa | Microsoft Office Excel | 6 | 30.11.2013 18:45 |
Случайные буквы | StudentMarat | Помощь студентам | 6 | 17.10.2011 17:24 |
случайные слова | bonifacy7 | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 06.04.2011 21:09 |
Случайные числа | severin | Помощь студентам | 8 | 02.02.2010 17:35 |
Случайные чила | Алексей_xXx | Помощь студентам | 13 | 07.05.2009 20:21 |