如何在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的两篇关于洗牌的博客文章:Shuffling和The 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 举报,一经查实,本站将立刻删除。