牵着老婆满街逛

严以律己,宽以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 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; 
//由此得到不重复的随机排列数字

posted on 2006-04-17 17:14 杨粼波 阅读(1148) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理