PDA

Просмотр полной версии : Random...


dyh9l
18.11.2010, 16:09
Как в таймере сделать рандомный таймер интервал до 400 до 700 допустим?

NLObP
18.11.2010, 16:15
dyh9l, например так
timer3.interval:=2000+round(random()*1000); //время задержки, не менее 2 секунд

dyh9l
18.11.2010, 16:22
в моем случае:
timer3.interval:=400+round(random(300));
Я правильно понимаю? Число надо рандомное от 400 до 700
И надо ли что-то указывать где-то в переменных?

Добавлено через 3 минуты
фобос, чего сообщение удалил?)

NLObP
18.11.2010, 16:37
function Random ( LimitPlusOne : Integer ) : Integer;

Пример кода :
// Получение целых случайных чисел в диапазоне 1..100
for i := 1 to 5 do
begin
int := 1 + Random(100); // Эти 100 значений дают диапазон 0..99
ShowMessage('int = '+IntToStr(int));
end;
end;

int = 68
int = 32
int = 17
int = 38
int = 43

Описание:
Функция Random генерирует случайные числа. Это могут быть числа с плавающей запятой числами в диапазоне:

0 <= Number <1.0

или целые числа в диапазоне:

0 <= Number
Delphi использует генератор псевдослучайных чисел, который, каждый раз, при выполнении программы возвращает одну и ту же последовательность значений (232).

Чтобы избегать этой предсказуемости, используйте процедуру Randomize. Она в качестве начального псевдослучайного значения устанавливает текущее время.

J-Fobos давал хорошую ссылку на тему (http://coderx.ru/showthread.php?t=5443)

Добавлено через 7 минут
в моем случае:
timer3.interval:=400+round(random(300));
Я правильно понимаю? Число надо рандомное от 400 до 700
И надо ли что-то указывать где-то в переменных?

Да, правильно.

Вот так я это значение изменяю
//......................................
procedure OnTimer3(Sender: TObject);
begin
timer.enabled:=false; //остановим все таймеры
timer2.enabled:=false;
timer3.enabled:=false;
EditItemVal.text:=inttostr(sumitem(ItemID)); //всё время обновляем кол-во предметов
EditScrollVal.text:=inttostr(sumitem(ScrollID)); //всё время обновляем кол-во свитков
//рандомное время задержки между улучшениями
timer3.interval:=2000+round(random()*1000); //время задержки, не менее 2 секунд иначе банят!
RequestEnchantItem(ItemOID);
end;

Breadfan
18.11.2010, 21:00
кхм..открыл лог аськи
[<3]~DyH9l~(^^,) (02:35:44 14/11/2010)
а сам таймер вызывает тело скрипта)

Breadfan (02:42:07 14/11/2010)
var
TT1:ttimer;
res:integer;
min, max:integer;
procedure Init; //Вызывается при включении скрипта
begin
min:=500; // - минимальная граница интервала
max:=7000; // - максимальная граница интервала
TT1:=TTimer.Create(nil);
TT1.OnTimer:=@Mesg; // процедура выполняющаяся по таймеру
TT1.enabled:=True; //таймер вкл.
TT1.interval:=1000; //стартовое значение интервала
end;
procedure Free; //Вызывается при выключении скрипта
begin
TT1.enabled:=False;
TT1.free;
end;
procedure Mesg; //проц-ра выполняющаяся по таймеру
begin
SendMsg('Интервал: '+inttostr(TT1.interval)); //выводим старый интервал
res:=min+int((max-min)*random); // получаем новый случайный интервал, где мин\макс - границы диапазона
TT1.interval:=res; //интервалу присваевается новое значение
end;
begin
end.
Я ж тебе описывал все это уже.