Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.02.05;
Скачать: CL | DM;

Вниз

Как набрать правильно массив случайных чисел?   Найти похожие ветки 

 
kyn66 ©   (2005-12-28 15:22) [0]

Уважаемые мастера. Подскажите, каким образом мне набрать массив из 30 чисел случайными в диапазоне 1-:-90. В моем коде, представленном ниже, масив заполняется не верно, т.е. в него попадают значения 0-:-30, а где остальные? И почему при первом запуске присутствует у меня в массиве -1?

procedure TForm1.Button1Click(Sender: TObject);
Var
 i, j : Integer;
begin
 Randomize;
 ListBox1.Clear;
 for i := 1 to 30 do
  A[i] := -1;
 for i := 1 to 30 do
  begin
    j := Random(90);
    while A[j] <> -1 do
     j := Random(90);
    A[J] := i;
  end;
 for i := 1 to 30 do
  ListBox1.Items.Add(IntToStr(A[i]));
end;


Спасибо.


 
Verg ©   (2005-12-28 15:33) [1]

Randomize;

for i:= 1 to 30 do
  A[i] := random(90)+1;


 
Digitman ©   (2005-12-28 15:35) [2]

procedure TForm1.Button1Click(Sender: TObject);
Var
i : Integer;
begin
Randomize;
ListBox1.Clear;
for i := 0 to 29 do // цикл по элементам массива из значений 30-ти случ.чисел
 A[i] := Random(90) + 1;
 ListBox1.Items.Add(IntToStr(A[i]));
end;
end;


 
kyn66 ©   (2005-12-28 16:36) [3]

А где проверка на то, что эти числа не повторятся?


 
Digitman ©   (2005-12-28 16:47) [4]


> А где проверка на то, что эти числа не повторятся?


А ГДЕ это условие фигурирует в изначальном твоем вопросе ?!


 
Digitman ©   (2005-12-28 16:48) [5]


> kyn66 ©   (28.12.05 16:36) [3]


учись формулироватьт ТЗ.
оно полезно.
не для работы - для МОЗГОВ.


 
kyn66 ©   (2005-12-28 17:12) [6]

Согласен. Дополняю, числа не должны повториться.
Пардонс.


 
Verg ©   (2005-12-28 17:29) [7]

var
 A          : array[1..30] of integer;
 RandomPool : array[1..90] of integer;

procedure InitPool;
var I : integer;
begin
 for I := 1 to high(RandomPool) do
   RandomPool[I] := I;
end;

procedure IncPollIndex( var Index : integer );
begin
 inc( Index );
 if Index > high(RandomPool) then
  Index := 1;
end;

function PoolGetNumber( Index : integer ) : integer;
begin
 while RandomPool[ Index ] = -1 do
   IncPollIndex( Index );
 PoolGetNumber       := RandomPool[ Index ];
 RandomPool[ Index ] := -1;
end;

procedure Get30Random;
var I : integer;
begin
 Randomize;
 InitPool;
 for I :=1 to 30 do
   A[I] := PoolGetNumber( Random( high(RandomPool)) + 1);
end;

procedure TForm1.Button1Click(Sender: TObject);
var I : integer;
begin
 Get30Random;
 ListBox1.Clear;
 for I := 1 to 30 do
   ListBox1.AddItem(IntToStr(A[I]), nil);
end;


 
Verg ©   (2005-12-28 17:31) [8]

Лексику сам поправь



Страницы: 1 вся ветка

Текущий архив: 2006.02.05;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.031 c
8-1124933210
Исследователь
2005-08-25 05:26
2006.02.05
Попытка видеозахвата (DirectShow)


2-1137542188
Rusya13
2006-01-18 02:56
2006.02.05
Выбор базы данных


15-1137405101
alex-drob
2006-01-16 12:51
2006.02.05
Не работает сеть.


3-1133526802
Vedun
2005-12-02 15:33
2006.02.05
Структура файлов баз данных


5-1124174962
vvvaaa
2005-08-16 10:49
2006.02.05
Создание контролов