当前位置:  开发笔记 > 人工智能 > 正文

天真洗牌的现实问题

如何解决《天真洗牌的现实问题》经验,为你挑选了2个好方法。

我正在撰写一些文章,旨在通过使用与扑克相关的主题来教授开始编程概念.目前,我正在研究洗牌问题.

正如Jeff Atwood在CodingHorror.com上指出的那样,一个简单的改组方法(迭代数组并用阵列中其他地方的随机卡交换每个卡)会产生不均匀的排列分布.在实际应用中,我会使用Knuth Fisher-Yates shuffle来获得更均匀的随机性.但是,我不想用更少编码器友好的算法来解释编程概念.

这就产生了一个问题:如果黑帽子知道你正在使用52张牌的天真洗牌,那么黑帽子有多大的优势呢?看起来它会无限小.



1> Nick Johnson..:

与天真洗牌相比,knuth shuffle是一个微不足道的变化:只需更换甲板上剩余(未洗涤)部分的任何卡片,而不是整个牌组中的任何位置.如果您认为它是从剩余的未选择卡片中按顺序重复选择下一张卡片,那么它也非常直观.

就个人而言,我认为当正确的算法不复杂(并且更容易想象!)时,教学生的算法很差,这是一种糟糕的方法.



2> Mike Ivanov..:

事实证明,优势非常显着. 看看这篇文章

部分问题是有缺陷的算法,但另一部分假设您可以从计算机获得"随机"数字.

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有