Форум: "Основная";
Текущий архив: 2006.02.05;
Скачать: [xml.tar.bz2];
ВнизКак набрать правильно массив случайных чисел? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.011 c