Knuth shuffle的变种

时间:2015-03-30 19:40:45

标签: algorithm probability

这是一个非常困难但有趣的概率问题,与Knuth shuffle有关。

当为每个元素循环时,使用整个数组中的任何随机元素(不在左边的元素内)对当前元素执行交换,那么原始第i个元素在第j个结尾处的概率是多少?位置?

2 个答案:

答案 0 :(得分:2)

This page将你提到的算法与Knuth's进行比较,显示为什么Knuth更好。

注意:以下内容可能有误,请参阅评论。

我不知道计算你问的概率的简单方法,我似乎也找不到任何简单的解释,但想法是你的算法(通常被称为天真的shuffle算法)考虑n^n数组的排列而不是n!。这是因为元素i可以在步骤n的每个i位置结束。由于您在每个步骤和n步骤中都有n种可能性,因此加起来为n^n。由于n^n并不总是被n!整除,因此并非所有排列都具有相同的概率,这就是为什么算法被认为是一个糟糕的混乱。

由于并非所有排列具有相同的概率,因此您所询问的概率对于ij的不同值是不同的,但我不知道计算它的公式

答案 1 :(得分:-1)

在适当的Knuth shuffle中,你循环遍历i个元素,选择52中的一个与元素1交换,然后剩下的51个中的一个与元素2交换,50个中的一个剩余与元素3交换,一旦元素被放入生长的集合1,2,3 ......它将永远不会再移动。因此,元素i在位置1结束的几率正好是1/52 - 它只能在第一个循环上发生。它在单元格2中结束的几率是它在第二遍(1/51)中选择它的几率不是单元格1(51/52)倍的几率。 51s取消,留下1/52。同样,元素i在第3位结束的几率为51/52 * 50/51 * 1/50,同样为1/52。因此,每个元素都有相同的机会在每个单元格中结束。

在你的随机播放中,可以再次选择已经放置的元素以便以后切换,这使得计算赔率非常困难。