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