假洗牌顺序映射器 · 顺序到底保留了多少
魔术里的「假洗牌」是个被严重低估的词:很多手法看起来在洗牌,实际顺序一点没动,观众却以为牌被随机了。问题是,「看起来洗过」和「真的被洗过」之间究竟差多少?这个工具把几种常见手法各写成一个精确的置换,然后算出三个数:整副牌的顺序还剩多少(最长递增子序列)、有多少张牌根本没动过、以及原来相邻的牌有多少对还挨在一起。结果很直观:边缘理牌式的假洗保留 100% 顺序,完美交叉洗牌只剩 51.9%,而真正随机洗牌的期望是 27.7%。
怎么用
先选手法。工具内置八种:两种是纯假洗(边缘理牌原序放回、假切原序接回),两种是半真(单张插入洗、顶底各抽 10 张交叉),两种是真洗(完美交叉、切半后上下交换),另外还有整叠翻转和真随机洗牌。
牌数默认 52,改成 54 就是含大小王的一副牌,改成 32 就是小牌堆。牌数一变所有指标都要重算:真随机洗牌的期望保留度随 1/√n 变化,52 张是 27.7%,32 张反而升到 35.4%。
看三行结果:顺序保留度衡量整副牌还剩多少原来的先后关系,原位保留率衡量有多少张牌一张没动,相邻保持率衡量原来的邻居还挨不挨在一起。三个数缺一不可,只看其中一个会得出相反结论。
想看具体映射就看「新牌堆前 12 张」和「位置对照」两行:前者告诉你新牌堆从顶往下第 1、2、3 张原本是第几张,后者告诉你原来第几张现在跑到第几位。把牌数改一下,这两行会明显不同。
易错:三类高频错法
- 把假洗牌当成绝对安全。假洗保持 100% 顺序,意味着你完全知道每张牌在哪;一旦同一场表演里还需要一次真洗,记得前一手的人会一直用原来的顺序跟踪你。
- 只看原位保留率。完美交叉洗牌后有 2 张牌(第 1 张和第 52 张)还在原位,原位保留率只有 3.8%,看起来像几乎没动;但它的顺序保留度是 51.9%,整副牌其实被彻底打散了。反过来,切半交换的原位保留率是 0%,相邻保持率却有 98%,原来的邻居全都还挨在一起。
- 把真随机的期望值当成保证。E[LIS] ≈ 2√n 是平均值,单次洗牌的波动不小:52 张的期望是 27.7%,某一次可能只有 18%,另一次能到 36%。需要「观众指定的那张牌一定在中间」这种效果时,期望值不能当保证用。
- 忽略牌数变化。同一手洗法在 32 张牌上的保留度比 52 张更高,因为顺序片段在短牌堆里占比更大。半真洗在 52 张上保留 80.8%,在 32 张上就只剩 75.0%,拿 52 张的结果套到别的牌数上会算错。
三个指标分别在量什么
顺序保留度看的是整副牌还剩多少原来的先后关系。做法是取新牌堆编号序列的「最长递增子序列」:新牌堆从顶往下的编号里,最长的一段严格递增的子序列,长度就是保留下来的顺序长度。它等于「你最多能连续追踪多少张牌还不出错」。
原位保留率是位置一动不动的牌数除以总张数,回答「有多少张牌根本没被碰过」。
相邻保持率是原来挨在一起的两张牌现在还挨在一起的牌对数除以 n−1,回答「牌堆的局部结构有没有被打散」。
三个数必须一起看。完美交叉洗牌的原位保留率只有 3.8%,顺序保留度却有 51.9%;切半交换的原位保留率是 0%,相邻保持率高达 98%——牌全被挪了位置,可每一对老邻居仍然挨在一起。只看一个指标,两种手法会得出完全相反的评价。
为什么完美交叉洗牌是 51.9% 而不是 50%
完美交叉洗牌把 52 张分成两叠再完全交叉,新牌堆从顶往下的原始编号是 1, 27, 2, 28, 3, 29, …, 26, 52。
直觉上你会说「只剩一半的顺序」:奇数位那 26 张(1 到 26)是一个递增子序列,偶数位那 26 张(27 到 52)也是。但其实还能更长一点。最长的取法有两种:取 1 到 26 之后,只剩最后一个位置(第 52 位上的 52)可以接,总共 27 个;或者只取最前面的 1,再接上 27 到 52 这 26 个,同样 27 个。无论怎么取,上限都是 27。
27 ÷ 52 = 51.9%
这「多出来的半张牌」正是很多人洗完牌后仍觉得某几张牌位置眼熟的原因:顺序并没有真正被彻底打散,只是被打散了大部分。
真随机洗牌的期望值怎么来的
真随机洗牌得到的是一个均匀随机的排列,它的最长递增子序列长度的期望有经典结论:E[LIS] ≈ 2√n。
n = 52 时,2√52 ≈ 14.4,对应保留度 14.4 ÷ 52 ≈ 27.7%。注意这个比例其实是 2/√n,牌堆越小比例越高:32 张是 35.4%,16 张是 50%,8 张高达 70.7%。所以一副小牌堆「看起来更有序」,这不是错觉。
另外两个指标也有解析值:随机排列中每张牌留在原位的期望是 1/n(52 张时 1.9%),原来相邻的两张牌仍然相邻的概率是 1/(n−1)(52 张时 2.0%)。
把假洗的 100% 和真随机的 27.7% 放在一起看,中间那 72 个百分点就是「观众以为被洗过」和「真的被洗过」之间的全部距离。
常见问题
假洗牌到底算不算欺骗观众?
为什么切半交换的相邻保持率能到 98%?
最长递增子序列怎么理解成「我能追踪多少张牌」?
换一副牌数,结果会差多少?
工具的数字和我自己数的不一样,通常是哪里错了?
边界说明
- 本页只做顺序分析,不评价某个手法好不好看、观众会不会察觉,也不提供任何具体手法的教学步骤。
- 真随机洗牌那一项给出的是数学期望值(基于均匀随机排列的经典结论 E[LIS] ≈ 2√n),不是某一次洗牌的实测结果。
- 各个手法的置换模型是理想化模型,真实操作中的额外偏差(手滑、掉牌、拿错叠)不在计算范围内。
- 只适用于单一牌堆的顺序分析。多人配合、预先记位、上下牌这类依赖额外约定的效果,本页的三个指标无法覆盖。