我因为一个程序需要,要求生成200个左右的随机不重复4位数?下面是我的算法,可是它会产生重得,请大家帮帮想一下算法,要求不能产生重复数。
procedure TForm1.Button2Click(Sender: TObject);
var
s:string;
i:integer;
begin
memo1.Clear;
Randomize;
for i:=0 to 100 do
begin
s:=IntToStr(Random(9999));
case length(s) of
1:s:='000'+s;
2:s:='00'+s;
3:s:='0'+s;
end; memo1.Lines.Add(s);
end;
end;谢谢大家!
procedure TForm1.Button2Click(Sender: TObject);
var
s:string;
i:integer;
begin
memo1.Clear;
Randomize;
for i:=0 to 100 do
begin
s:=IntToStr(Random(9999));
case length(s) of
1:s:='000'+s;
2:s:='00'+s;
3:s:='0'+s;
end; memo1.Lines.Add(s);
end;
end;谢谢大家!
begin
s:=IntToStr(Random(9999));
case length(s) of
1:s:='000'+s;
2:s:='00'+s;
3:s:='0'+s;
for k:=0 to j do
begin
if a[k]=s then
break
else
begin
a[j]:=s
j:=j+1;
end;
end;if j=200 then
break;
end;
Num: array[0..9999] of Cardinal;
I, J, K: Integer;for I := 0 to 9999 do
begin
Num[I] := I;
end;
Randomize;
J := 10000;
for I := 0 to 200 do
begin
K := Random(J);
Memo.Lines.Add(Format('%0.4d', [Num[K]]));
Num[J - 1] := Num[K] + Num[J - 1];
Num[K] := Num[J - 1] - Num[K];
Num[J - 1] := Num[J - 1] - Num[K];
Dec(J);
end;