Вниз
Скачать: CL | DM;

Почему 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.009 c
1-52577
Стас
2001-12-28 08:33
2002.01.17
QReport


14-52646
asafr
2001-11-17 18:35
2002.01.17
Никакой жизни... И в субботу работа...


14-52637
Sobesednic
2001-11-20 22:56
2002.01.17
В чем разница Delphi 6 Enterprise(144mb) от Delphi 6 Personal(140mb)


1-52526
Baz
2001-12-26 10:21
2002.01.17
Господи, да что ж делается-то?!


14-52649
vic_vm
2001-11-21 13:48
2002.01.17
Плакат




   Наверх