产生不重复随机数的简便算法
吉林燃料乙醇 秦玉庆
产生不重复随机数的算法能够解决诸如随机洗牌,抽彩等问题,在网上的一些算法自觉较繁,现给出简单的算法。以下源程序为1..36个数字,随机排列,产生不重复随机数。
var
aa : array[1..36] of string[2]; //aa数组为需要随机排列的数组,
{先把1..36按顺序给aa数组赋值}
procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
begin
for i:=1 to 36 do begin
aa[i]:=inttostr(i);
bb[i]:=inttostr(i);
end;
end;
{随机进行排列}
procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer;
swapa:string[2];
begin
randomize;
for i:=1 to 36 do begin
j:=1+random(36);
swapa:=aa[i];
aa[i]:=aa[j];
aa[j]:=swapa;
end; //由此得到不重复的随机排列数字