微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

delphi – 随机化StringList

如何在StringList中随机化String,同样地,这个在线工具如何工作.如果有人熟悉它,请检查: http://textmechanic.co/Randomize-List.html

解决方法

执行随机播放的一个常见算法是 Fisher-Yates shuffle.这产生均匀分布的排列.

要在Delphi TStrings对象上实现,可以使用:

procedure Shuffle(Strings: TStrings);
var
  i: Integer;
begin
  for i := Strings.Count-1 downto 1 do 
    Strings.Exchange(i,Random(i+1));
end;

现在,理论上,这将产生均匀分布的排列,实际的性能在很大程度上取决于随机数发生器的质量.这在knuth的计算机编程艺术,第2卷,3.4.2节,算法P.

进一步阅读:

> Fisher-Yates shuffle(维基百科)
> Jeff Attwood的两篇关于洗牌的博客文章ShufflingThe Danger of Naïveté
> The intuition behind Fisher-Yates shuffling(Eli Bendersky)
> Art of Computer Programming,唐纳德·克努特,卷2,第3.4.2节
> Shuffling(维基百科)

原文地址:https://www.jb51.cc/delphi/102590.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐