我想做一个名字列表,然后随机选择,但所有的名字都应该被调用。当然不会重复。delphi代码
发布于 2010-08-05 15:04:38
我的建议是列出一个名字,然后洗牌,然后一个接一个地叫它。我希望这段代码能为你工作。
...
private
{ Private declarations }
FNameList : TStringList;
FNameIndex: Integer;
public
{ Public declarations }
end;
...
procedure TForm1.FormCreate(Sender: TObject);
var i: Integer;
begin
Randomize;
FNameIndex := 0;
FNameList := Tstringlist.Create;
// FNameList.LoadFromFile('NameList.txt'); or
FNameList.Add('Name 1');
FNameList.Add('Name 2');
FNameList.Add('Name 3');
FNameList.Add('Name 4');
FNameList.Add('Name 5');
FNameList.Add('Name 6');
for i:= 1 to 100 do // shuffle 100 times. its up to you
FNameList.Exchange(Random(FNameList.Count-1), Random(FNameList.Count-1));
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
FNameList.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if FNameIndex < FNameList.Count then
begin
showmessage(FNameList.Strings[FNameIndex]);
inc(FNameIndex);
end else showmessage('Done!');
end;发布于 2010-08-05 15:12:29
好吧,我不能给你delphi代码,但我在这里有非常相同的问题。我使用的是来自这个网站http://de.fakenamegenerator.com的名字列表(带地址)。
也许这能帮上点忙。
发布于 2010-08-05 16:09:32
我对delphi不感兴趣,但是算法非常简单。只需使用随机生成的索引将姓名插入到列表中。这样你就有了一个随机排序的名字列表。然后只需迭代它。
https://stackoverflow.com/questions/3412423
复制相似问题