扑克牌的完美打乱

当一副扑克牌完全打乱,结果并不是随机的。一个完美的洗牌将卡在数学上精确的顺序。因此,当最常见的版本的一个完美的洗牌是重复八次,甲板返回到原来的状态。

内容

一副扑克牌

新鲜的包,一副扑克牌总是有黑桃a第一,紧随其后的是其余的黑桃。心,,接下来,紧随其后的是俱乐部在绿色(如图所示),最后是钻石(蓝色)。钻石之王是最后一个。这是一个新的甲板。

v = 1:52;deck_view (v)标题(0)

完美洗牌

一个完美的洗牌也被称为完美洗牌,因为它被频繁应用于经典纸牌游戏法。甲板上切成两包,每个包含卡的一半。然后两包被精确地交叉合并卡。

有两个变种。在一个out-faro洗牌,合并从上半年开始前卡和最终完成下半年的最后一张牌。所以out-faro洗牌的一个新的甲板,黑桃a仍然在上面,钻石之王仍在底部。一个在瑞典从下半年开始洗牌。所以黑桃a和钻石是王插入分别在第二和最后的位置旁边。

Out-Faro

洗牌是排列元素的向量代表的甲板上。这是该指数向量产生out-faro洗牌。创建一个矩形矩阵1点在第一行27:52在第二个。所以它的第一列[27]1;,第二列是[2;28],等等。的重塑操作,这是由列,然后生成所需的索引向量。

撅嘴=重塑([1:26;27:52]、[52])
撅嘴= 27列1到13 1 2 28 3 29 4 30 5 31 6 32 7列14到26 33 8 34 36 9 35 10 11 37 12 38 13 39列27日通过39 14 40 15 16 42 17 43 18 44 19 41 45 20列40通过52 46 21 47 22 48 23 49 24 50 51 25 26 52

这是由于连续两个out-faro打乱一个新的甲板。

v = 1:52;v = v(撅嘴);deck_view (v)标题(1)
v = v(撅嘴);deck_view (v)标题(2)

4张a已经到前面和四王又次之。

只需要8 Out-Faro打乱。

让我们重新开始一个新的甲板,应用撅嘴排列的八倍,捕捉一个gif动画中的结果。甲板上返回到原来的状态在短短8步骤。

v = 1:52;deck_view (v)标题(0)t = 1:8 v = v(撅嘴)deck_view (v)标题(t)结束

在瑞典

这是在瑞典的索引向量suffle。

销=重塑([27:52;造人],[1,52])
销= 27列1到13 1 28 2 29 3 30 4 31 5 32 6 33列14到26七34八35 9 36 10 37 11 38 12 39 13列27日通过39 40 14 41 15 16 43 17 44 18 45 19 42 46列40通过52 20 47 21 48 22 49 23 50 24 51 25 52 26

需要52在打乱回到原来的状态。

置换矩阵

两个完美洗牌可以用置换矩阵。你能看到他们吗间谍情节不同吗?

我=眼睛(52);关闭撅嘴=我(撅嘴:);间谍(撅嘴)标题(“生气”)
:销=我(销);间谍(Pin)标题(“销”)

事实证明,最小的值t矩阵的权力P t ^等于单位矩阵是什么t = 8P =撅嘴t = 52P =销

特征值。

所有的这些都是由解释道特征值。矩阵撅嘴52,但只有8截然不同的特征值,即8日统一的根源。

情节(eig(撅嘴),“o”)标题(“eig(撅嘴)”)轴(1.25 *[1 1 1 1])轴(“广场”)

另一方面,有52个不同特征值,52-nd根的团结。

情节(eig(销)“o”)标题(“eig(销))轴(1.25 *[1 1 1 1])轴(“广场”)

多样性

的特征值撅嘴与不同的multiplicites发生。你能解释一下这些数从何而来?

e = eig(撅嘴);z = exp(π/ 4 * 1我)数= 0 (1,8);k = 0:7计数(k + 1) = (abs (ez ^ k)和< 52 * eps);结束disp (' ')disp (“multiplicites = ')disp (' 1 z z ^ 3 1 z z ^ ^ 5 - 7”)disp(计数)
我multiplicites z = 0.7071 + 0.7071 = 1 z z ^ 3 1 z z ^ ^ 5 - 7 9 6 6 6 7 6 6 6

Deck_view。

这是清单deck_view

类型deck_view
函数deck_view (v) % deck_view (v)显示卡片组v %准备图窗口。f = clf;f。位置= (200 300 600 150);f。NumberTitle =“关闭”;f。工具栏= '没有';f。菜单条= '没有'; f.PaperPositionMode = 'auto'; % Prepare the axes. ax = axes; ax.Position = [0 0 1 .88]; ax.XLim = [-1 54]; ax.YLim = [-1 15]; ax.XTick = ''; ax.YTick = ''; ax.Box = 'on'; % Colors for spades, hearts, clubs, diamonds. shcd = [0 0 0; 1 0 0; 0 .5 0; 0 0 .5]; % Plot one text character per card. pips = 'A23456789TJQK'; for i = 1:52 j = mod(v(i)-1,13)+1; k = floor((v(i)-1)/13)+1; t = text(i,j,pips(j)); t.FontSize = 10; t.Color = shcd(k,:); end end

一个有用的视频。

凯文·休斯顿是一个数学家在英国利兹大学的人也可以做完美的打乱。这里是一个链接到他的YouTube视频。完美的混乱




发表与MATLAB®R2015b

|

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。