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

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

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

你可能感兴趣的:(产生不重复随机数的简便算法)