前记:
这篇文章是2008年除夕那天写的,也就是刘谦第一次上春晚那天,现在翻出来作为这个博客的第一篇文章,纪念一下那些年我们一起追随的那个纯净的魔界,不被世俗铜臭所沾污。
扑克排列法,并不是魔术,而是表演某些魔术前所做的准备,也就是set牌。其实在魔术表演过程中,并不用把牌弄得这么复杂,写这篇文章纯属个人兴趣。但是有时可能会派上用场,比如遇到奥客时或者在摄像机前表演等……原创文章,请勿转载。
方法一:顺序排列法。
这个是比较简单的排列法,主要利用递加,递减的方法来实现扑克牌数字的排列。
排列过程可以分为两部分:数字的排列和花色的排列。
1、数字的排列:
本文所用的例子是公差为6的递增数列,即:A,7,K,6,Q,5……
为什么要选择公差为6排列呢?原因有三:
①:这样看起来扑克牌比较乱。
②:比较容易计算下一张牌,如果你看到的是5,那么下一张就是5+6=11,也就是J。
由于数列中最大的数是13,而6处于13的中间,13-6=7,因此如果你看到的牌大于7,那你可以直接减7。
例如你看到9,那么下一张就是9-7=2了,你不用算9+6=15,15-13=2。
所以说:看到比7小的就加6,看到比7大的就减7,看到7下一张就是K。
③:我喜欢6这个数字。
2、花色的排列:
我们规定:黑桃为1,红桃为2,梅花为3,方块为4。
那么下一张牌的花色由前一张牌的数字加花色后除以4得到的余数得出(如果整除就是方块)。
例:第3张是黑桃K,黑桃为1,K为13,1+13=14,14÷4=3…2,2为红桃,并且13-7=6,所以下一张为红桃6。
从黑桃A开始,要一张一张地算出下一张牌是很痛苦的事,所以让电脑帮我排吧。以下为VB代码:
Dim a%, b%, m$, n$ a = -5 For i = 1 To 13 a = a + 6 If a > 13 Then a = a - 13 m = Choose(a, "1", "2", "3", "4", "5", "6", "7", "8", "9", "X", "J", "Q", "K") Print m & " "; Next Print: Print "黑 "; a = 1: b = 1 For i = 2 To 52 b = (a + b) Mod 4 If b = 0 Then b = 4 n = Choose(b, "黑", "红", "梅", "方") a = a + 6 If a > 13 Then a = a - 13 Print n & " "; If i Mod 13 = 0 Then Print Next
输出结果如下图(X为10的罗马字母):

3、扑克牌的排法:
这个就简单了,先把牌按数字分成13组,花色按上图排列,再按从左到右的顺序拿牌。
4、优缺点:
优点:排列简单,推算简单,是追求速度型的首选。
缺点:不是很笨的人能很快发现数字排列的规律,对于追求完美的人来说,这个方法不适用。那么请看第二种排列方法吧。
方法二:口诀排列法。
1、数字的排列:
看看效果,你能找出数字排列的规律吗?不可能吧。

其实怎么看都是找不出规律的,因为它不是按顺序排列的,而是按特殊的方法排列的。
这个方法是从一本魔术书上看到的。
口诀是:
Eight Kings Threatend To Save Ninety-Five Queens For One Sick Knave. 8 K 3 10 2 7 9 5 Q 4 A 6 J
也就是谐音排列的,英文对大家来说都是小case吧。
如果前一张是J,那么下一张就是8。
花上几分钟,你就能倒背如流。
2、花色的排列:
花色排列方法同顺序排列法,下一张牌的花色由前一张牌的数字加花色后除以4的余数得出。
当然,这也是让电脑排列的,以下为VB代码:
Dim a, n$ Print "8 K 3 X 2 7 9 5 Q 4 A 6 J" a = Array(1, 1, 2, 1, 3, 1, 4, 1, 2, 2, 2, 3, 1) For i = 1 To 4 For j = 0 To 12 n = Choose(a(j), "黑", "红", "梅", "方") Print n & " "; Next For k = 0 To 12 a(k) = a(k) - 1 If a(k) = 0 Then a(k) = 4 Next Print Next
输出如下:


3、扑克牌的排法:
这个也很简单,先把牌按数字分成13组,花色按上图排列,再按从左到右的顺序拿牌。
4、优缺点:
优点:排列简单,别人不能发现数字排列的规律,是追求稳重型的首选。
缺点:推算速度较慢,但是扑克牌每隔13张就循环一次,经不起仔细的检查。
对于追求完美的人来说,这个方法也不适用。那么请看第三种排列方法吧。
方法三:乱序排列法。
1、数字的排列和花色的排列:
这个排列方法把数字的排列和花色的排列放在一起了,因为要让整副牌看起来毫无规律,就不能用重复13张牌的方法,因此一个思路诞生了:下一张牌的数字和花色是由前一张牌的数字和花色决定的。
首先我想出了第一个方法:下一张牌的数字由(前一张牌的数字加上花色后)除以13的余数得出,花色由(本张的数字加上前一张花色后)除以4的余数得出,比较复杂,后面再解说。
以下为VB代码:
Dim a%, b%, m$, n$ a = 1: b = 1 For i = 1 To 52 n = Choose(b, "黑", "红", "梅", "方") m = Choose(a, "A", "2", "3", "4", "5", "6", "7", "8", "9", "X", "J", "Q", "K") a = a + b If a > 13 Then a = a - 13 b = (a + b) Mod 4 If b = 0 Then b = 4 Print n & m & " "; If i Mod 13 = 0 Then Print Next
执行代码后得出了下面的结果:

这样明显出了问题:第1张牌和第33张牌是一样的,都是黑桃A。
这说明了只有前面32张牌形成一个循环,而还有20张牌没参加循环。
怎么办?怎么办啊?方法错了吗?
一般人到了这里就另寻方法了,但是我今天为什么能在这里发表这篇教程,因为我心存一句名言:Just have a little faith.
在思考了1分钟零5秒后,我想:为什么它们没参加循环,因为它们自己可能构成一个循环。
我把前面32张牌找出来排列完后,在剩下的20张牌找出了最小的牌:黑桃2。
把上面的代码改一下,把a = 1: b = 1改为a = 2: b =1(即从黑桃2开始排列),执行代码后结果如下:

这次有15张牌形成一个循环,还剩下5张牌。
那么剩下的红桃3,梅花5,梅花8,红桃J,梅花K,是不是也形成一个循环呢?老天保佑啊,一定要成功!
把上面的代码中的a = 2: b = 1改为a = 3: b = 2(即从红桃3开始排列),执行代码后结果如下:

剩下的5张牌果然形成了一个循环啊。
不会吧,这样就成功了?
不会吧,这样就成功了?
成功其实很近,也很遥远。
把三个循环:①黑桃A~方块10 ②黑桃2~梅花Q ③红桃3~梅花K 合在一起,我们只需记住3个特殊情况:方块10后是黑桃2,梅花Q后是红桃3,梅花K后是黑桃A。
其它的牌都是按规律找的。例如方块树的下一张是什么牌呢?方块是4,树是4(没听过“方块树”这个词?去看看刘小谦的“顽皮的扑克”),那么4 + 4 = 8,下一张牌的数字是8;花色是8加上前一张的花色(8 + 4)再除以4得出的,结果整除,所以是方块8。
例如红桃9,红桃是2,2 + 9 = 11,所以下一张是J;(11 + 2)÷4 = 3…1,1是黑桃,所以红桃9的下一张是黑桃J。
例如方块J,方块是4,J是11,4 + 11 = 15,15 - 13 = 2,所以下一张数字是2;(2 + 4)÷4 = 1…2,2是红桃,下一张就是红桃2。
2、扑克牌的排法:
排列比较复杂,得花点时间,按下图排列吧:

3、优缺点:
优点:别人较难发现数字排列的规律,扑克牌可以交给观众检查。
缺点:排列很复杂,推算速度较慢。
第二个方法:这个就不写了,大家可以自己研究出满意的排列方法。如果大家有要求我再写出来。
方法四:无敌排列法。
此方法绝对强悍,谁也不能找出其中的规律,规律只有你自己知道。
你只要把一副牌洗乱,再把它们记起来,用右脑的图像记忆法,加上谐音、联想和桩子,不难把一副扑克牌背起来。
如果你真的背了一副扑克牌,那你以后只用它就行了。
具体的记忆方法以后另开帖子。
后记:构思和写这篇文章花了两天的时间,其中第三种方法占了1天的时间,在似错非错中挣扎,不断地在错误中寻找出路,但总算在2009春节前完成了。
还有其它的思路没写出来,大家有意见请提出来,虚心接受大家的意见。
2013/08/17 00:01:52
有实战经验么?

2013/08/17 20:43:12
准备起来很麻烦,基本没用到
2013/03/18 21:44:00
2013/03/18 21:46:55
2013/03/18 22:56:32
以前那个论坛也不见了,但是你的这个牌序法我一直记着,特别是那个编程出来的乱序排列法,前几天一搜就搜到你的博客了~
2013/03/18 23:07:33
你太厉害了,不过好像看不到图片了,估计是图片用了中文文件名的问题
2013/03/18 23:38:16
图片我还有存着呢~~~后来我发现你的这个牌序和一位大师的牌序The Osterlind Breakthrough Card System想法是一致的~不过他的更完美,可以一副牌排下来,不用好几个循环
2013/03/19 08:47:57
这么厉害,那我会找来看的
2012/03/08 11:33:52
必须要留下哥的第一个脚印!!!!哈哈
2012/03/08 11:45:37