Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
15-1137148921
Jeer
2006-01-13 13:42
2006.02.05
Странный день


6-1130398948
Mikhail
2005-10-27 11:42
2006.02.05
Indy(IdHTTP)


15-1137157638
psa247
2006-01-13 16:07
2006.02.05
Матрицы LCD - мониторов !


3-1133523354
Сафаров
2005-12-02 14:35
2006.02.05
сообщение об ошибке "BOF или EOF имеет значение True"


15-1136960266
ArchValentin
2006-01-11 09:17
2006.02.05
Блин, народ, не могу с Blootuth портом разобраться!





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