Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

генератор случайных чисел [D7, XP]


Страницы:   1 2

A2618 ©   (2007-07-26 21:18:00) 

Всем здрасти.
Вопрос сообственно такой, я не могу понять как сделать так чтоб случайно сгенерированые числа сохранялись в определенные переменные.


Ping   (2007-08-03 09:34:00) [1]

если можно реализовать как-то проще  то подскажите

procedure TForm1.Timer1Timer(Sender: TObject);
var
 S: string;
begin
 S := IntToStr(Random(999 - 100) + 1 + 100);
 if (Memo1.Lines.IndexOf(S) = -1) then
   Memo1.Lines.Add(S);
 Label7.Caption := IntToStr(Memo1.Lines.Count);
end;


То есть, конечно, проще было бы запретить дубликаты в строках.
Но что-то мне подсказывает, что автор просто привел тестовый вариант. Чего реально получить хотел - не понятно.

P.S. "Не понятно..." (С) СС


Dib@zol   (2007-08-03 09:34:00) [2]

УЖЖАСТЬ!!!

Привожу нормальный код:
(только для повышения читабельности!!!)

const r = 899; // Telepated

procedure TForm1.Timer1Timer(Sender: TObject);
var
 i : Byte;
 LPG: array [1..5] of String;
begin
 for i:=1 to length(LPG) do begin
   LPG[i]:=IntToStr(Random(r)+1+100);
   if memo1.Lines.IndexOf(LPG[i])=-1 then Memo1.Lines.Add(LPG[i]);
 end;
 Label7.Caption:=IntToStr(r-Memo1.Lines.Count);
end;

Помоему вот и всё!


MBo   (2007-08-03 07:01:00) [3]

>если можно реализовать как-то проще  то подскажите
объясни толком, что за задача


a2618   (2007-08-03 06:50:00) [4]

С параметром r этот код выглядит так

procedure TForm1.Timer1Timer(Sender: TObject);
var
g, o, p, q, u, i: String;
LPG: array[1..5] of String;
begin
LPG[1]:=IntToStr(Random(999-100)+1+100);
LPG[2]:=IntToStr(Random(999-100)+1+100);
LPG[3]:=IntToStr(Random(999-100)+1+100);
LPG[4]:=IntToStr(Random(999-100)+1+100);
LPG[5]:=IntToStr(Random(999-100)+1+100);
o:=IntToStr(memo1.Lines.IndexOf(LPG[1]));
p:=IntToStr(memo1.Lines.IndexOf(LPG[2]));
q:=IntToStr(memo1.Lines.IndexOf(LPG[3]));
u:=IntToStr(memo1.Lines.IndexOf(LPG[4]));
i:=IntToStr(memo1.Lines.IndexOf(LPG[5]));
if StrToInt(o)=-1 then
Memo1.Lines.Add(LPG[1]);
if StrToInt(p)=-1 then
Memo1.Lines.Add(LPG[2]);
if StrToInt(q)=-1 then
 Memo1.Lines.Add(LPG[3]);
 if StrToInt(u)=-1 then
  Memo1.Lines.Add(LPG[4]);
  if StrToInt(i)=-1 then
   Memo1.lines.Add(LPG[5]);
g:=IntToStr(r-(Memo1.Lines.Count)) ;
Label7.Caption:=g;
end;

если можно реализовать как-то проще  то подскажите


a2618   (2007-08-03 06:23:00) [5]

выглядит жеско сам удивляюсь как до этого додумался )


a2618   (2007-08-03 06:21:00) [6]

Код собственно вот ток не надо гнать что лечше былобы сделать как-то подругому до чего смог додуматься то и сделал

procedure TForm1.Timer1Timer(Sender: TObject);
var
g, o, p, q, u, i: String;
LPG: array[1..5] of String;
begin
LPG[1]:=IntToStr(Random(r)+1+100);
LPG[2]:=IntToStr(Random(r)+1+100);
LPG[3]:=IntToStr(Random(r)+1+100);
LPG[4]:=IntToStr(Random(r)+1+100);
LPG[5]:=IntToStr(Random(r)+1+100);
o:=IntToStr(memo1.Lines.IndexOf(LPG[1]));
p:=IntToStr(memo1.Lines.IndexOf(LPG[2]));
q:=IntToStr(memo1.Lines.IndexOf(LPG[3]));
u:=IntToStr(memo1.Lines.IndexOf(LPG[4]));
i:=IntToStr(memo1.Lines.IndexOf(LPG[5]));
if StrToInt(o)=-1 then
Memo1.Lines.Add(LPG[1]);
if StrToInt(p)=-1 then
 Memo1.Lines.Add(LPG[2]);
 if StrToInt(q)=-1 then
  Memo1.Lines.Add(LPG[3]);
  if StrToInt(u)=-1 then
   Memo1.Lines.Add(LPG[4]);
   if StrToInt(i)=-1 then
    Memo1.lines.Add(LPG[5]);
g:=IntToStr(r-(Memo1.Lines.Count)) ;
Label7.Caption:=g;
end;


Zagaevskiy   (2007-08-02 20:51:00) [7]

Я оказывается телепат!!!Нашёл у него ошибку!В семнадцатой строке!


MasterOfReasons   (2007-08-02 20:05:00) [8]

если компилится, то грамматических ошибок нет.в логике я ошибки не вижу(у меня всё работает).Ты лучше выложи кусок кода, где ты эту строчку используешь.А то может быть ты выводишь эту строчку на ещё не созданный объект(да много чего может быть).Ищи ошибку в неправильно реализованной логике.


Gadenysh   (2007-08-02 20:03:00) [9]


> a2618 ©   (02.08.07 19:26) [10]


ежу понятно, ошыбка - несоответствие типов в вызове InttoStr. в библиотеку!!!


Virgo_Style   (2007-08-02 19:48:00) [10]

Раз ошибка выдается, значит, она есть...


Zagaevskiy   (2007-08-02 19:47:00) [11]


> LPG

Это какой массив?И ошибку, ошибку в студию!


a2618   (2007-08-02 19:26:00) [12]

чет не выходит в ккачестве параметра  r передаю 999-100
прога компелиться запускаеться но при генерации числа выдаеться ошибка

LPG[1]:=IntToStr(Random(r)+1+100);


Dib@zol   (2007-08-02 19:03:00) [13]

> я правильно понял

Да.


a2618   (2007-08-02 18:57:00) [14]

>Уточнюсь:
Random(<Верхняя граница диапазона>-<Нижняя>)+1+<Нижняя>;

тоесть получаеться
Random(999-100)+1+100;
я правильно понял


Dib@zol   (2007-08-02 18:52:00) [15]

> Random(<Верхняя граница диапазона>)+1+<Нижняя>;

Уточнюсь:
Random(<Верхняя граница диапазона>-<Нижняя>)+1+<Нижняя>;


Dib@zol   (2007-08-02 18:45:00) [16]

Муахахаха.
Random(<Верхняя граница диапазона>)+1+<Нижняя>;
Вообщето, таким вопросам одна дорога - в Орешник...


a2618   (2007-08-02 18:40:00) [17]

Опять вопрос. Можно ли какнить сгенерировать число в заданом диапазоне.


Вася Правильный   (2007-07-26 22:38:00) [18]

a: array[1..5] of Integer;
...
a[i]:=Random(...);


a2618   (2007-07-26 22:33:00) [19]

>Вася Правильный  
  массив + цикл

цикл есть
begin
 for i := 1 to 5 do
 begin
   int := 1 + Random(1000);    
 end;
end;

а как сохранить результат в массиве?


Вася Правильный   (2007-07-26 22:22:00) [20]

массив + цикл


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо