|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.03.2014, 23:35 | #1 |
Форумчанин
Регистрация: 23.11.2010
Сообщений: 530
|
вывод рандомной записи
Подскажите как правильно решить такого рода задачу...
Есть много строк нужно вывести рандомно одну из всех, но такую, которая не выводилась при предыдущих запусках программы. первое что пришло в голову записать их в текстовый файл. при запуске читать файл в переменную. посчитать количество строк в переменной. вывести строку c номером i:=random(n)+1 удалить строку с номером i посчитать количество строк в переменной. ... вывести удалить посчитать ... при выходе из программы переписать файл. но это хорошо, когда строк не много... и весь файл можно прочитать в переменную. а если строк будет много? как быть тогда? |
03.03.2014, 05:03 | #2 |
Негодник
Форумчанин
Регистрация: 10.11.2009
Сообщений: 880
|
Если строка будет считываться 100% единажды и не более, то я б сделал в БД ещё одно поле was_read логического типа. Как прочел, ставишь галку.
Если помог, проси поставить минус. Будь оригинален!
|
03.03.2014, 13:04 | #3 |
Форумчанин
Регистрация: 23.11.2010
Сообщений: 530
|
я думал о чем то подобном, но...
допустим рандомить ID и проверять поле was_read тогда нужно повторять в цикле вывод пока не совпадет условие т.е. чем меньше останется записей тем больше будет интераций цикла... |
03.03.2014, 13:17 | #4 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,528
|
Цитата:
Код:
программа — запись алгоритма на языке понятном транслятору
|
|
03.03.2014, 13:26 | #5 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
А когда все строки исчерпаются - прога не запускается?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
03.03.2014, 13:49 | #6 | |
Форумчанин
Регистрация: 23.11.2010
Сообщений: 530
|
спасибо за идею.
а если случится такая ситуация, что не выводившиеся ранее записи останутся только с ID большим чем randID? допустим 300 записей, а randID=250... а не выводились последние 50. P.S. Цитата:
Последний раз редактировалось unbanned; 03.03.2014 в 13:53. |
|
03.03.2014, 14:29 | #7 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Цитата:
я бы предложил такую схему: при запуске Код:
если cntNoRead = 1 то Код:
тот самый цикл выбора значений (можно кодом, предложенным выше, а можно, я бы лично сделал именно так, вытащить все невыпавшием номера и выбрать номер среди них) |
||
04.03.2014, 14:40 | #8 | ||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,528
|
Цитата:
Цитата:
Код:
Код:
а если ...
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 04.03.2014 в 14:44. |
||
05.03.2014, 00:59 | #9 |
Форумчанин
Регистрация: 23.11.2010
Сообщений: 530
|
я понял спасибо всем за советы. буду пробовать...
|
05.03.2014, 09:17 | #10 |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 977
|
можно продумать метод для базы. делаем глобальный селект всех записей. в каждой записи есть поле проверки выбора. рандом указывает на строку и вы выставляете в базе 1 в поле вывода. далее настраиваем фильтр бдгрида что бы не отображать строки с проверкой равной 1. (или эту единичку записать в базу и заново селект но уже с ограничением что с единичками не берём строки). и так далее пока не останется пустой набор.
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Записи!RadioGroup вывод варианта | wlll | Общие вопросы Delphi | 3 | 21.04.2013 17:01 |
Рандомное значение в рандомной кнопке | konserva | Общие вопросы Delphi | 2 | 11.04.2012 16:06 |
Вывод последней записи из таблицы mysql | NapalmRain | PHP | 4 | 24.06.2011 14:41 |
Вывод поля записи | ofenod | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 30.03.2011 18:27 |
вывод записи поиска | artemi | Общие вопросы C/C++ | 3 | 24.05.2010 22:01 |