永发信息网

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

答案:3  悬赏:20  手机版
解决时间 2021-03-22 11:48
  • 提问者网友:富士山上尢
  • 2021-03-21 12:39
delphi 怎么让字母随机排序?例如,ABCFGQ这几个字母,我怎样能让它们随机排序,排成一串20个,可以重。
最佳答案
  • 五星知识达人网友:行路难
  • 2021-03-21 13:24
找到字母的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;追问你好,非常好,谢谢!我还想问一下,如何让它不出现连续的相同字母,如两个BB,BBB这类,谢谢!
全部回答
  • 1楼网友:零点过十分
  • 2021-03-21 13:58
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;
  • 2楼网友:廢物販賣機
  • 2021-03-21 13:47
偷懒 直接那楼上的回答拿来改 防止连续相同

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;
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯