我正在写一些文章,旨在通过使用与扑克相关的主题来教授初级编程概念。目前,我正在研究洗牌的主题。
正如Jeff Atwood 在 CodingHorror.com 上指出的那样,一种简单的洗牌方法(遍历数组并将每张卡片与数组中其他地方的随机卡片交换)会导致排列分布不均匀。在实际应用中,我只会使用Knuth Fisher-Yates shuffle以获得更均匀的随机性。但是,我不想用对编码器不太友好的算法来解释编程概念。
这就引出了一个问题:如果黑帽知道你使用的是 52 张牌的天真洗牌,他们会有多大的优势?似乎它会无限小。