Форум: "Основная";
Текущий архив: 2002.01.17;
Скачать: [xml.tar.bz2];
ВнизПочему random(4) всегда возвращает 0??? Найти похожие ветки
← →
greenrul (2001-12-29 14:42) [0]Пример -
procedure changebanner;
var rand:integer;
begin
rand:=random(4);
ShowMessage(IntToStr(rand));
end;
← →
panov (2001-12-29 14:47) [1]Есть еще инициализация генератора: Randomize;
← →
Andrey (2001-12-29 14:48) [2]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
← →
Вадим (2001-12-29 15:22) [3]Randomize надо вызывать только 1 раз при старте программы
← →
greenrul (2001-12-29 15:28) [4]Ну а почему тот-то код не работает?
как я понял, если я по таймеру делаюRandom
, тоRandomise
мне не поможет?
← →
Andrey (2001-12-29 15:35) [5]> greenrul
Встречный вопрос. Ты Help читал?
P.S. Потому что не инициализирован генератор.
← →
panov (2001-12-29 15:35) [6]>greenrul © (29.12.01 15:28)
Достаточно один раз при старте программы проинициализировать генератор случайных чисел процедурой Randomize.
← →
~skaminski~ (2001-12-29 17:46) [7]2 Вадим
Randomize можно вывзывать сколько раз душеньке угодно, и слово "достаточно" ни при чем. Я, напр., вызываю его по таймеру раз в 1 мин примерно ;)
← →
yaJohn (2001-12-29 18:10) [8]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...
← →
Dimaond Cat (2001-12-30 14:12) [9]А еще лучше самому рандомчик написать, потому как стандартный довольно галимый :о)
← →
Yaro (2001-12-30 14:50) [10]>> ~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;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.01.17;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c