delphi 怎么让字母随机排序?例如,ABCFGQ这几个字母,我怎样能让它们随机排序,排成一串20个,可以重。

 我来答
lin257257
2013-03-15 · TA获得超过424个赞
知道小有建树答主
回答量:331
采纳率:100%
帮助的人:178万
展开全部
找到字母的asii值,好像是35到多少,忘记了,或者自己定义一个数组,把字母放进去
然后用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;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sirouszlh
2013-03-16 · TA获得超过1651个赞
知道小有建树答主
回答量:1038
采纳率:100%
帮助的人:628万
展开全部
偷懒 直接那楼上的回答拿来改 防止连续相同

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;
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2013-03-15 · TA获得超过2184个赞
知道小有建树答主
回答量:631
采纳率:100%
帮助的人:635万
展开全部
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;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式