产生不重复随机数的简便算法

类别:Delphi 点击:0 评论:0 推荐:

产生不重复随机数的简便算法

     吉林燃料乙醇 秦玉庆

产生不重复随机数的算法能够解决诸如随机洗牌,抽彩等问题,在网上的一些算法自觉较繁,现给出简单的算法。以下源程序为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;  //由此得到不重复的随机排列数字

本文地址:http://com.8s8s.com/it/it5178.htm