Главная страница
    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.57 MB
Время: 0.016 c
1-52610
VicV
2001-12-28 18:31
2002.01.17
Работа с архивами zip


3-52505
Кнопка
2001-12-09 15:07
2002.01.17
Поиск в базе


1-52606
Yaro
2001-12-30 14:11
2002.01.17
TRegistry.SaveKey - ???


3-52522
Oleg_K
2001-12-14 10:05
2002.01.17
DataSet not in edit or insert mode


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





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский