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

王朝delphi·作者佚名  2006-01-08
宽屏版  字体: |||超大  

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

吉林燃料乙醇 秦玉庆

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有