![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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]
> может я чего не так делаю?
может чего и не так ...
код приводи ...