Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.02.2011, 15:21   #1
Равиль2303
 
Регистрация: 31.01.2011
Сообщений: 6
По умолчанию Разъясните данную процедуру

Что делает данная функция
Код:
function CreateVyb(ques:integer;table:TADOTable):string;
var n,lowd,hid,i:integer;
begin
 result:='';
 table.Active:=true;
 n:=table.RecordCount div ques;
 table.Active:=false;
 lowd:=1;
 hid:=n+1;
 for i := 1 to ques do
  begin
   randomize;
   result:=result+inttostr(randomrange(lowd,hid))+',';
   lowd:=hid;
   hid:=hid+n;
  end;
 delete(result,length(result),1);
end;

Последний раз редактировалось Stilet; 11.02.2011 в 17:52.
Равиль2303 вне форума Ответить с цитированием
Старый 11.02.2011, 15:40   #2
asmodey1
Подтвердите свой е-майл
 
Регистрация: 19.12.2010
Сообщений: 808
По умолчанию

Код:
function CreateVyb(ques:integer;table:TADOTable):string;
var n,lowd,hid,i:integer;
begin
 result:=''; //задаем начальное значение возвращаемого результата
 table.Active:=true; //открываем некую таблицу
 n:=table.RecordCount div ques; //считываем количество записей в ней и целочисленно делим на входной параметр ques
 table.Active:=false; //закрываем таблицу за ненадобностью
 lowd:=1; //задаем значение начала интервала генерируемых случайных величин
 hid:=n+1; //задаем значение конца интервала генерируемых случайных величин
 for i := 1 to ques do //в цикле по входному параметру ques генерируем очередное число
  begin
   randomize; //инициируем ГСЧ (правильнее, на мой взгляд, произвести ее один раз - перед циклом...)
   result:=result+inttostr(randomrange(lowd,hid))+','; //получаем строковое значение случайного числа из диапазона (интервала)  lowd<->hid
   lowd:=hid;//"переносим" интервал выше, над уже использованным
   hid:=hid+n;
  end;
 delete(result,length(result),1)//удаляем запятую в конце результирующей строки
end;
Результат (в виде строки) - составное случайное число, некоторым образом скореллированное с числом записей в таблице БД в данный момент, в которое могут входить как одноразрядные, так и многоразрядные случайные числа, расположенные подряд, друг за другом.
Для улучшения "коэффициента случайности" можно еще ввести строковый массив размерностью ques, чтобы получаемые СЧ записывать не подряд (в элементы массива), а в случайном порядке, "перемешивая" индексы элементов массива. А уже потом собрать результирующую строку.

Последний раз редактировалось Stilet; 11.02.2011 в 17:52.
asmodey1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разъясните условие k1r1ch Помощь студентам 10 18.11.2009 17:27
Реально ли построить данную фигуру? NoHeart Общие вопросы Delphi 10 13.02.2009 18:39
Разъясните условие ... VaR_Female Помощь студентам 0 02.11.2008 19:40
Помогите реализовать данную задачу ==Spider== Работа с сетью в Delphi 2 15.12.2007 11:25