Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Работа для программиста > Фриланс
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.08.2009, 11:35   #1
Evgeny_1
Новичок
Джуниор
 
Регистрация: 18.08.2009
Сообщений: 0
Восклицание Генерация случайных чисел?!

Добрый день Господа!!!
Подскажите пожалуйста! Как можно создать генерацию случайных чисел на Delphi?! Чтобы по первому нажатию на кнопку Button1 в Lable1 возникали различные числа от 5 до 20 в интервале 5 сек. А по второму нажатию на Button1 все прекращалось...

Заранее спасибо.
С уважением Evgeny_1.
Evgeny_1 вне форума Ответить с цитированием
Старый 29.08.2009, 11:46   #2
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,453
По умолчанию

вот это нужно:

Код:
var
  Form1: TForm1;
  Step: Integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 Step:= 1;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 case Step of
  1: begin
     Step:= Step + 1;
     Timer1.Enabled:= True;
  end;

  2: begin
     Step:= Step - 1;
     Timer1.Enabled:= False;
 end;
 end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Label1.Caption:= IntToStr(Random(20));
end;

Последний раз редактировалось uberchel; 29.08.2009 в 11:53.
uberchel вне форума Ответить с цитированием
Старый 29.08.2009, 12:15   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

uberchel, общая идея правильная,
но Вы забыли иницилизацию генератора ПСЧ, неверно задаёте интервал чисел, да и Step здесь лишний..

вот так более корректно (да и попроще будет):
Код:

procedure TForm1.FormCreate(Sender: TObject);
begin
  //надо обязательно иницилизировать генератор ПСЧ
  Randomize;
  Timer1.Interval := 5000; // 5 секунд
  Timer1.Enabled := true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  // числа от 5 до 20 включительно
  Label1.Caption:= IntToStr(Random(21-5)+5);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Timer1.Enabled := Not Timer1.Enabled;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.08.2009, 13:06   #4
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

В обеих случаях неверно выбран диапазон:
Цитата:
числа от 5 до 20
, т.е. всего 16 чисел.
Random(15) + 5
Random(15) выдаст случайное число от 0 до 15 (всего 16 значений), добавляем пятерку и попадаем в необходимый диапазон.

Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
  //надо обязательно иницилизировать генератор ПСЧ
  Randomize;
  Timer1.Interval := 5000; // 5 секунд
  Timer1.Enabled := false;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  // числа от 5 до 20 включительно будут отображаться последовательно (Label желательно
  //  по ширине формы)
  Label1.Caption:= Label1.Caption + '    '  +  IntToStr(Random(15)+5);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Timer1.Enabled := true;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Timer1.Enabled := false;
end;
И не сомневайся даже ... отдых - кайф, работа - лажа!

Последний раз редактировалось DeKot; 29.08.2009 в 13:15.
DeKot вне форума Ответить с цитированием
Старый 29.08.2009, 13:13   #5
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

Четырнадцать...
//------------------
За что штраф то...? Я ведь правильно сказал О_О

Последний раз редактировалось Levsha100; 29.08.2009 в 13:34.
Levsha100 вне форума Ответить с цитированием
Старый 29.08.2009, 13:29   #6
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Цитата:
Четырнадцать...
Согласен, соврал. Random(15) - значит, что выдаст 15 цифр начиная с нуля, т.е. [0 . . 14]/
Правильно будет - IntToStr(Random(16)+5)
Вот скрин результата проекта
http://i061.radikal.ru/0908/02/e7c558ea90a6.jpg
И не сомневайся даже ... отдых - кайф, работа - лажа!

Последний раз редактировалось DeKot; 29.08.2009 в 13:35.
DeKot вне форума Ответить с цитированием
Старый 29.08.2009, 13:44   #7
Evgeny_1
Новичок
Джуниор
 
Регистрация: 18.08.2009
Сообщений: 0
По умолчанию

Всем Большое Спасибо!!!
Получилось Отлично!!!
Evgeny_1 вне форума Ответить с цитированием
Старый 29.08.2009, 13:45   #8
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

случайное число от a до b, a<b
x:=a+random(b-a+1);
Например:
a=-50; b=-5;
x:=-50+random(-5-(-50)+1); или x:=-50+random(46);
Года 2 назад, была тема в которой ни как не могли правильно записать генерацию случайных чисел)) Примерно тогда я и написал свое первое сообщение на этом форуме и вообще в интернете=)
Kostia вне форума Ответить с цитированием
Старый 29.08.2009, 13:59   #9
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

OffTop -
Цитата:
За что штраф то...? Я ведь правильно сказал О_О
Че, штраф влепили? Не понятно. Поправка очень правильная. Если и сказанна в завуалированной форме, то наоборот "плюс".Заставляет подумать.Г-да модераторы - хоть в личку объясните.
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 29.08.2009, 14:05   #10
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

Да ладно. Я сам виноват. А на счет репы мне плевать
//Я опять неправильно выразился, это не штраф а "-"... Мозги просто не успевают за компом
///И тем более это пункт 3.1 нашего закона ))
////Сори, что ошибся.
//////// И еще, НЕ НАДО, пожалуйста, НИЧЕГО "КОМПЕНСИРОВАТЬ" И еще раз повторяю, мне на репу ПЛЕВАТЬ, просто стало интересно...

Последний раз редактировалось Levsha100; 29.08.2009 в 14:15.
Levsha100 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Генерация случайных... Яр|/||< (^_^) Общие вопросы Delphi 2 22.06.2009 21:33
генератор случайных чисел на С++ ANTI Общие вопросы C/C++ 20 12.04.2009 13:02
Генератор случайных чисел psychopat Общие вопросы Delphi 11 18.02.2009 10:39
Генерация Случайных Чисел Кирилл13 Помощь студентам 6 06.01.2009 10:31
выборка случайных чисел furstenberg Общие вопросы Delphi 2 13.01.2008 21:07