首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对不重复的名字进行随机化?

如何对不重复的名字进行随机化?
EN

Stack Overflow用户
提问于 2010-08-05 15:01:10
回答 4查看 1.3K关注 0票数 2

我想做一个名字列表,然后随机选择,但所有的名字都应该被调用。当然不会重复。delphi代码

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-08-05 15:04:38

我的建议是列出一个名字,然后洗牌,然后一个接一个地叫它。我希望这段代码能为你工作。

代码语言:javascript
复制
...
  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;
票数 1
EN

Stack Overflow用户

发布于 2010-08-05 15:12:29

好吧,我不能给你delphi代码,但我在这里有非常相同的问题。我使用的是来自这个网站http://de.fakenamegenerator.com的名字列表(带地址)。

也许这能帮上点忙。

票数 0
EN

Stack Overflow用户

发布于 2010-08-05 16:09:32

我对delphi不感兴趣,但是算法非常简单。只需使用随机生成的索引将姓名插入到列表中。这样你就有了一个随机排序的名字列表。然后只需迭代它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3412423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档