我正在寫一些文章,旨在通過使用與撲克相關的主題來教授開始的編程概念。目前,我正在研究洗牌問題。天真洗牌的真實世界問題
作爲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