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

Вниз

случайные числа   Найти похожие ветки 

 
UserUserov   (2004-08-28 23:55) [0]

Мне бы хотелось заполнить двухмерный статический массив случайными неповторяющимися числами.Как??!!Надо!


 
TUser ©   (2004-08-29 06:29) [1]

ramdom + проверка на повторяемость.
Возможно есть и какие-нибудь генераторы, которые гарантируют неповторяемость, но я про таких не слышал. Можно, кстати, сделать так

function H(d:double):integer;
begin
result:={число от 0 до N*M-1,
        где N,M - размеры массива}
end;

procedure MakeArray;
var ResultArray:array[0..N,0..M]of double;
   BoolArray:array[0..N*M-1]of boolean;
   i,j:integer;
begin
Randomize;
BoolArray[...]:=false;
for i:=0 to N do
for j:=0 to M do begin
repeat
ResArray[i,j]:=random;
k:=H(ResArray[i,j]);
until not BoolArray[k];
BoolArray[k]:=true;
end;
end;

Правда, будет ли это решение хорошим сильно зависит от реализации ф-ции H(). Можно взять хеш-ф-цию из класса THashedStringList и переделать ее для чисел.


 
Magikan ©   (2004-08-29 09:25) [2]


//Проверка на повторяемость
function Test(i, j: Integer): Boolean;
begin
 Result:=False;
 if i>0 then
   if a[i, j]=a[i-1, j] then
     exit;
 if j>0 then
   if a[i, j]=a[i, j-1] then
     exit;
 Result:=True;
end;

...
var
 i, j: Integer;
begin
 Randomize;
 ...
 //Заполнение массива
 for i:=0 to N do
   for j:=0 to M do
     repeat
       a[i, j]:=Random(X);
     until Test(i, j);
end.


 
SergP ©   (2004-08-29 09:49) [3]

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



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

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

Наверх




Память: 0.47 MB
Время: 0.021 c
4-1091094354
Егор_С
2004-07-29 13:45
2004.09.12
Появление формы поверх всех приложений


3-1092680067
_Dragon
2004-08-16 22:14
2004.09.12
Обновление записей


10-1037617973
Comwad
2002-11-18 14:12
2004.09.12
Почему неуклонно растет память приложений клиента и сервера в D7?


1-1093895320
bloodman
2004-08-30 23:48
2004.09.12
почему на этих строчках вылезает АV ??


14-1093155078
asdqwer
2004-08-22 10:11
2004.09.12
Пауза между появлением гудка в линии и набором номера