procedure TForm1.Button1Click(Sender: TObject);
var
st, i, k, num: byte;
reco: array[0..9] of byte;
suc: boolean;
begin
table1.Open; //aa
table2.Open; //bb
table2.edit;
st := table1.RecordCount;
for i := 0 to 9 do reco := 0;
i := 0;
while (i < 10) do
begin
Num := Random(st) + 1;
table1.first;
table1.MoveBy(Num - 1);
suc := true;
k:=0;
while (k<i) and suc do
begin
if reco[k] = Num then suc := false;
k:=k+1;
end;
if suc then
begin
reco := num;
table2.append;
table2.Fields[0].AsString := table1.Fields[0].AsString;
i := i + 1;
end;
end;
table1.close;
table2.post;
table2.close;
end;