delphi 怎么让字母随机排序?例如,ABCFGQ这几个字母,我怎样能让它们随机排序,排成一串20个,可以重。
3个回答
展开全部
找到字母的asii值,好像是35到多少,忘记了,或者自己定义一个数组,把字母放进去
然后用random函数,n个字母就random(n),然后把这个值作为下标把数组里的值取出来即可。
然后用random函数,n个字母就random(n),然后把这个值作为下标把数组里的值取出来即可。
更多追问追答
追问
用定义数组的方法程序怎么写啊,麻烦高人帮忙哈
追答
procedure TForm1.Button1Click(Sender: TObject);
const Arr_E : array[0..4] of string = ('A','B','C','D','E');
var
s :string;
i : Integer;
begin
s := '';
for i:=0 to 19 do
s := s + Arr_E[Random(5)];
Memo1.Lines.Add(s);
end;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
偷懒 直接那楼上的回答拿来改 防止连续相同
const Arr_E : array[0..4] of string = ('A','B','C','D','E');
var
s,c1,c2 :string;
i : Integer;
begin
s := '';
for i:=0 to 19 do
begin
c1:= Arr_E[Random(5)];
while c1=c2 do
begin
c1:= Arr_E[Random(5)];
end;
s := s + c1;
c2:=c1;
end;
Memo1.Lines.Add(s);
end;
const Arr_E : array[0..4] of string = ('A','B','C','D','E');
var
s,c1,c2 :string;
i : Integer;
begin
s := '';
for i:=0 to 19 do
begin
c1:= Arr_E[Random(5)];
while c1=c2 do
begin
c1:= Arr_E[Random(5)];
end;
s := s + c1;
c2:=c1;
end;
Memo1.Lines.Add(s);
end;
追问
如果我还要求在生成的随机字母中,A不能和B连着,C不能与F连着,如AB,CF,那又该怎么写呢?
追答
你的规律不明确
只好写死板一点了
var
s,c1,c2 :string;
i : Integer;
begin
s := '';
for i:=0 to 19 do
begin
c1:= Arr_E[Random(5)];
while ((c1='B')and (c2='A')) or ((c1='F')and (c2='C')) or (c1=c2) do
begin
c1:= Arr_E[Random(5)];
end;
s := s + c1;
c2:=c1;
end;
Memo1.Lines.Add(s);
end;
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
procedure TForm1.Button1Click(Sender: TObject);
var
aa : string;
bb : string;
i: integer;
lena :integer;
Lenb:integer;
last: string; //判断连续
begin
aa := 'ABCFGQ';
bb := '';
Lena := length(aa);
lenb:=0;
while lenb < 20 do
begin
i:=1+random(Lena);
last := aa[i];
if (length(bb)>0) and (last=bb[length(bb)]) then
continue;
bb:=bb+aa[i];
lenb := length(bb);
end;
edit1.Text := bb;
end;
var
aa : string;
bb : string;
i: integer;
lena :integer;
Lenb:integer;
last: string; //判断连续
begin
aa := 'ABCFGQ';
bb := '';
Lena := length(aa);
lenb:=0;
while lenb < 20 do
begin
i:=1+random(Lena);
last := aa[i];
if (length(bb)>0) and (last=bb[length(bb)]) then
continue;
bb:=bb+aa[i];
lenb := length(bb);
end;
edit1.Text := bb;
end;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询