天天看点

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

产生不重复随机数的算法能够解决诸如随机洗牌,抽彩等问题,在网上的一些算法自觉较繁,现给出简单的算法。以下源程序为1..36个数字,随机排列,产生不重复随机数。

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

var

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

aa : array[1..36] of string[2]; //aa数组为需要随机排列的数组,

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

{先把1..36按顺序给aa数组赋值}

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

procedure TForm1.FormCreate(Sender: TObject);

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

i:integer;

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

begin

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

for i:=1 to 36 do begin

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

aa[i]:=inttostr(i);

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

bb[i]:=inttostr(i);

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

end;

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

{随机进行排列}

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

procedure TForm1.Button1Click(Sender: TObject);

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

i,j:integer;

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

swapa:string[2];

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

randomize;

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

j:=1+random(36);

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

swapa:=aa[i];

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

aa[i]:=aa[j];

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

aa[j]:=swapa;

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

end; //由此得到不重复的随机排列数字

继续阅读