Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

randomize [D7, Win2k]


alex-kosmonavt ©   (2005-06-29 12:51:00) 

Использую Randomrange для получения ряда чисел (500 штук) в цикле.
Как положено перед циклом запускаю процедуру randomize, но такое ощущение что она не срабатывает, ибо вот я смотрю как гененрируются числа, и удивляюсь , они все генерируруются по возрастанию, т.е. примерно так идет результат 1,12, 45, 345, 567, 723 и т.д. и нет совсем последовательностей типа   1, 15, 7, 567, 324 т.е в разброс

скажите это нормально????? может я чего не так делаю?


Плохиш   (2005-06-29 13:34:00) [1]


> alex-kosmonavt   (29.06.05 13:30) [6]

Использовать свойство Textи не использовать параметры.


alex-kosmonavt   (2005-06-29 13:30:00) [2]

to Плохиш
рекомендации по оптимизации принимаются :)


Digitman   (2005-06-29 13:23:00) [3]

то что ты видишь в таблице, соответствует не физическому порядку добавления записей, а порядку, определяемому индексом по полю Winner.ID


Плохиш   (2005-06-29 13:15:00) [4]


> alex-kosmonavt   (29.06.05 13:07) [3]

Судя по коду, всё прекрасно получается :-)
ID - индекс небось? Отсюда и всё отсортировано при отображении.

PS. Ужастный код :-(


alex-kosmonavt   (2005-06-29 13:07:00) [5]

Именно не срабатывает

т.е. последовательностей типа  1, 15, 7, 567, 324  не получается

мой код ниже


begin
Randomize;

MaxWinner:=20;
for i:=1 to maxwinner do
begin

 qMainPrize.Close;
 qMainprize.SQL.Clear;
 qMainPrize.SQL.Add('SELECT ID FROM PLAY WHERE ID NOT IN (SELECT ID FROM Winner) and i=:Par_ID');
 qMainPrize.Parameters.ParamByName('Par_ID').Value:=RandomRange(1,106330);
 qMainPrize.Open;
 While qMainPrize.RecordCount<1 do
   begin

     qMainPrize.Close;
     qMainprize.SQL.Clear;
     qMainPrize.SQL.Add('SELECT ID FROM PLAY WHERE ID NOT IN (SELECT ID FROM Winner) and i=:Par_ID');
     qMainPrize.Parameters.ParamByName('Par_ID').Value:=RandomRange(1,106330);
     qMainPrize.Open;
   end;
      qIns.SQL.Clear;
      qIns.SQL.Add('INSERT INTO Winner (ID) VALUES (:PAR_ID)');
      qIns.Parameters.ParamByName('PAR_ID').Value:= qMainPrize.Fields[0].AsInteger;
      qIns.ExecSQL;
end;

end;


koderman   (2005-06-29 12:55:00) [6]


> но такое ощущение что она не срабатывает

Как видно из этого примера

> результат 1,12, 45, 345, 567, 723

или
>  1, 15, 7, 567, 324

срабатывает


Digitman   (2005-06-29 12:55:00) [7]


> может я чего не так делаю?


может чего и не так ...

код приводи ...


Наверх

Титульная страница Поиск, карта сайта Написать письмо