Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 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;




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.17;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.018 c
1-52590           Д_Россиев             2001-12-29 13:25  2002.01.17  
RX для D6


3-52492           Dim                   2001-12-14 09:26  2002.01.17  
DLL & Delphi никак не поймут друг друга, или я их.


3-52514           Turalyon              2001-12-17 10:12  2002.01.17  
Знатокам SQL


14-52661          Beat                  2001-11-22 08:50  2002.01.17  
Я не понял в натуре, че за ДИСКРИМИНАЦИЯ???


3-52477           Макс                  2001-12-14 13:32  2002.01.17  
Фильтрация в ADOTable