А можно и так ещё, в лоб
Код:
...
type
rdm = array [{1} 0..9] of string;
procedure rds(var ds: rdm);
var
i, p, b: integer;
s, r: string;
begin
i:= {1} 0;
while i <= 9 do
begin
p:= Random(10);
b:= Random(10);
s:= ds[p];
r:= ds[b];
ds[p]:= r;
ds[b]:= s;
inc(i);
end;
end;
пример использования
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
m: rdm;
begin
Randomize;
for i:= {1} 0 to 9 do m[i]:= IntToStr(i); { IntToRome(i);}
Edit1.Text:='';
rds(m);
for i:= {1} 0 to 9 {Random(8)+2} do Edit1.Text:= Edit1.Text + m[i];
end;
в фигурных скобочках - вариант с ромой и переменной длинной наборчика