我正在写一些文章,旨在通过使用与扑克相关的主题来教授开始的编程概念。目前,我正在研究洗牌问题。天真洗牌的真实世界问题
作为Jeff Atwood points out on CodingHorror.com,一种简单的洗牌方法(遍历数组并将每张卡与数组中其他位置的随机卡交换)创建了不均匀的置换分布。在实际应用中,我只是使用Knuth Fisher-Yates shuffle来获得更均匀的随机性。但是,我并不想用编程友好的算法来解释编程概念。
这导致了一个问题:如果黑帽子知道你正在使用一张52张牌套牌的天真洗牌,那么黑帽子有多大优势?看起来这将是无限小的。
不,但阅读这些文章的人可能会继续。正确地进行洗牌是很重要的,因为做错了之前已经造成了休息。 – afrazier 2010-05-17 14:19:10
我在写这篇文章的时候并没有意识到这种差异是如此微不足道。我会同意:告诉他们好的洗牌算法。也许关于“为什么”的确切细节可以是“参考这些文献”。 – 2010-05-27 20:32:36