加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 随机化StringList

发布时间:2020-12-15 03:34:21 所属栏目:大数据 来源:网络整理
导读:如何在StringList中随机化String,同样地,这个在线工具如何工作.如果有人熟悉它,请检查: http://textmechanic.co/Randomize-List.html 解决方法 执行随机播放的一个常见算法是 Fisher-Yates shuffle.这产生均匀分布的排列. 要在Delphi TStrings对象上实现,可
如何在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(维基百科)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读