Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-52526
Baz
2001-12-26 10:21
2002.01.17
Господи, да что ж делается-то?!


6-52634
Star
2001-10-23 16:35
2002.01.17
Контроль за файлами ...


1-52542
AVL
2001-12-21 11:32
2002.01.17
Вопрос по FastReport 4.2


4-52688
BorisMor
2001-11-05 13:54
2002.01.17
UNRAR.DLL


1-52569
WAM
2001-12-27 11:27
2002.01.17
Указатель на dynamic array





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский