Вы должны использовать универсальный метод для перемешивания вашего массива.
Я написал это для вас:
uses
System.Math;
type
TArrayHelper = class abstract
public
class constructor Create;
class procedure PermuteArray<T>(var A: array of T);
end;
{ TArrayHelper }
class constructor TArrayHelper.Create;
begin
Randomize;
end;
class procedure TArrayHelper.PermuteArray<T>(var A: array of T);
var
Tmp: T;
i, j: Integer;
begin
for i := High(A) downto low(A) do
begin
j := RandomRange(0, i);
Tmp := A[i];
A[i] := A[j];
A[j] := Tmp;
end;
end;
Если вы хотите проверить его.Поместите кнопку и памятку в форму, а затем попробуйте этот код:
procedure TForm1.Button1Click(Sender: TObject);
procedure DisplayArray(A: array of Integer);
var
i: Integer;
s: String;
begin
s := '[';
for i := low(A) to min(10, High(A)) do
s := s + A[i].ToString + ',';
s[Length(s)] := ']';
Memo1.Lines.Add(s);
end;
var
i: Integer;
Nums: array [1 .. 9000] of Integer;
begin
Memo1.Lines.Clear;
for i := low(Nums) to High(Nums) do
Nums[i] := i;
DisplayArray(Nums);
TArrayHelper.PermuteArray(Nums);
DisplayArray(Nums);
end;