riffle shuffle 算法过于机械且可预测。我们如何添加一些随机性,就像真人洗牌但仍然使用 Riffle 方法一样?
最佳答案
在 Aldous 和 Diaconis 的论文《洗牌和停止时间》(来自《美国数学月刊》,93:5,第 333-348 页)中,作者研究了如何需要多次洗牌才能随机化一副牌。该论文的第 4 部分是对 Riffle Shuffle 的分析,他们讨论了(非完美的)纸牌洗牌的一些等效公式。
特别是,他们引用了随机洗牌的模型,该模型模拟“真实”的人如何洗牌。本质上,这副牌根据二项式分布被分成两部分,将 c
卡放在一只手上,将 n-c
放在另一只手上。然后,这些牌将“以与数据包大小成正比的概率从给定手中掉落”。
因此,一个简单的应用程序是假设您的牌组最初被分成两个相等的部分,然后以 a/(a+b)
的概率重复从哪张牌中选择下一张牌它来自尺寸a
的 block 和当前尺寸b
的 block 的b/(a+b)
概率。
关于algorithm - 具有随机性的 Riffle 洗牌算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21039928/