Главная страница
    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.012 c
3-1133618563
JazY
2005-12-03 17:02
2006.02.05
Как добавить запись в DBGrid?


15-1137068858
Ega23
2006-01-12 15:27
2006.02.05
Какой забавный мизер!


2-1137339808
Compton's G
2006-01-15 18:43
2006.02.05
pos наоборот


1-1136750829
AKMTT
2006-01-08 23:07
2006.02.05
потоки и таймер


15-1137010804
Firefly
2006-01-11 23:20
2006.02.05
Нужна ли программисту математика?





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