![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Почему random(4) всегда возвращает 0??? [D5]
greenrul © (2001-12-29 14:42:00)Пример -
procedure changebanner;
var rand:integer;
begin
rand:=random(4);
ShowMessage(IntToStr(rand));
end;
Yaro (2001-12-30 14:50:00) [1]>> ~skaminski~ - Я бы не советовал вызывать его "сколько душе угодно", он довольно тормознутый (это еще из паскаля помню :).
>> Dimaond Cat - А на счет своего рандома - это не так-то и просто.
Если не привязывать его к таймеру компьютера, чтоб быстрее работал, то это довольно-таки тупо выходит... Вот попробуйте код, приведенный ниже и посмотрите на результаты. У меня такое мнение сложилось (я про стандартный рандом), что он приблизительно по такому же принципу работает, только RANDOMIZE значение N из таймера берет...
var
n: real;
function _Random(_n: word): word;
begin if n = 0 then n := sqr(_n);
n := sqr(_n/n);
while not (n <= _n) do n := n/2;
Result := round(n);
end;
Dimaond Cat (2001-12-30 14:12:00) [2]А еще лучше самому рандомчик написать, потому как стандартный довольно галимый :о)
yaJohn (2001-12-29 18:10:00) [3]2 ~skaminski~
S tem je uspehom mojno vizivat raz v minutu sam random. A luchshe - po OnMouseMove.
A vizov Randomize po taimeru... Gdeto ya chital, chto Randomaize dlia inicializacii Now() ispolzuet...
~skaminski~ (2001-12-29 17:46:00) [4]2 Вадим
Randomize можно вывзывать сколько раз душеньке угодно, и слово "достаточно" ни при чем. Я, напр., вызываю его по таймеру раз в 1 мин примерно ;)
Andrey (2001-12-29 15:35:00) [5]> greenrul
Встречный вопрос. Ты Help читал?
P.S. Потому что не инициализирован генератор.
panov (2001-12-29 15:35:00) [6]>greenrul © (29.12.01 15:28)
Достаточно одинраз при старте программы проинициализировать генератор случайных чисел процедурой Randomize.
greenrul (2001-12-29 15:28:00) [7]Ну а почему тот-то код не работает?
как я понял, если я по таймеру делаюRandom, тоRandomiseмне не поможет?
Вадим (2001-12-29 15:22:00) [8]Randomize надо вызывать только 1 раз при старте программы
Andrey (2001-12-29 14:48:00) [9]var I: Integer;
begin
Randomize;
for I := 1 to 50 do begin
{ Write to window at random locations }
Canvas.TextOut(Random(Width), Random(Height), "Boo!");
end;
end;
Взято из Help-a
panov (2001-12-29 14:47:00) [10]Есть еще инициализация генератора: Randomize;