猜姓氏游戏及其数学原理

猜姓氏游戏及其数学原理

在民间流行着一种能够猜出别人“年龄和姓氏”的魔术,这是一套七张的卡片,在每张卡片上分别写有64个数和64个姓氏。

第Ⅰ张卡片 1赵 3孙 5周 7郑 9冯 11蒋 13韩 15朱 17许 19吕 21孔 23严 25金 27姜 29谢 31窦 33潘 35奚 37彭 39马 41方 43任 45柳 47史 49费 51雷 53倪 55殷 57郝 59于 61齐 63顾 65黄 67尹 69邵 71毛 73宋 75熊 77祝 79梁 81季 83江 85梅 87刁 89邱 91夏 93田 95万 97莫 99缪 101丁 103洪 105崔 107邢 109翁 111全 113仇 115景 117叶 119乔 121谭 123尚 125冷 127竺

第Ⅱ张卡片 2钱 3孙 6吴 7郑 10陈 11蒋 14杨 15朱 18何 19吕 22曹 23严 26魏 27姜 30柏 31窦 34葛 35奚 38鲁 39马 42俞 43任 46鲍 47史 50薛 51雷 54汤 55殷 58安 59于 62余 63顾 66萧 67尹 70汪 71毛 74茅 75熊 78董 79梁 82贾 83江 86林 87刁 90高 91夏 94胡 95万 98房 99缪 102邓 103洪 106吉 107邢 110储 111全 114刘 115景 118屠 119乔 122牛 123尚 126沙 127竺

第Ⅲ张卡片 4李 5周 6吴 7郑 12沈 13韩 14杨 15朱 20张 21孔 22曹 23严 28戚 29谢 30柏 31窦 36范 37彭 38鲁 39马 44袁 45柳 46鲍 47史 52贺 53倪 54汤 55殷 60卞 61齐 62余 63顾 68姚 69邵 70汪 71毛 76纪 77祝 78董 79梁 84郭 85梅 86林 87刁 92蔡 93田 94胡 95万 100解 101丁 102邓 103洪 108陆 109翁 110储 111全 116詹 117叶 118屠 119乔 124瞿 125冷 126沙 127竺

第Ⅳ张卡片 8王 9冯 10陈 11蒋 12沈 13韩 14杨 15朱 24华 25金 26魏 27姜 28戚 29谢 30柏 31窦 40花 41方 42俞 43任 44袁 45柳 46鲍 47史 56罗 57郝 58安 59于 60卞 61齐 62余 63顾 72戴 73宋 74茅 75熊 76纪 77祝 78董 79梁 88徐 89邱 90高 91夏 92蔡 93田 94胡 95万 104石 105崔 106吉 107邢 108陆 109翁 110储 111全 120翟 121谭 122牛 123尚 124瞿 125冷 126沙 127竺

第Ⅴ张卡片 16秦 17许 18何 19吕 20张 21孔 22曹 23严 24华 25金 26魏 27姜 28戚 29谢 30柏 31窦 48唐 49费 50薛 51雷 52贺 53倪 54汤 55殷 56罗 57郝 58安 59于 60卞 61齐 62余 63顾 80杜 81季 82贾 83江 84郭 85梅 86林 87刁 88徐 89邱 90高 91夏 92蔡 93田 94胡 95万 112宫 113仇 114刘 115景 116詹 117叶 118屠 119乔 120翟 121谭 122牛 123尚 124瞿 125冷 126沙 127竺

第Ⅵ张卡片 32苏 33潘 34葛 35奚 36范 37彭 38鲁 39马 40花 41方 42俞 43任 44袁 45柳 46鲍 47史 48唐 49费 50薛 51雷 52贺 53倪 54汤 55殷 56罗 57郝 58安 59于 60卞 61齐 62余 63顾 96卢 97莫 98房 99缪 100解 101丁 102邓 103洪 104石 105崔 106吉 107邢 108陆 109翁 110储 111全 112宫 113仇 114刘 115景 116詹 117叶 118屠 119乔 120翟 121谭 122牛 123尚 124瞿 125冷 126沙 127竺

第Ⅶ张卡片 64孟 65黄 66萧 67尹 68姚 69邵 70汪 71毛 72戴 73宋 74茅 75熊 76纪 77祝 78董 79梁 80杜 81季 82贾 83江 84郭 85梅 86林 87刁 88徐 89邱 90高 91夏 92蔡 93田 94胡 95万 96卢 97莫 98房 99缪 100解 101丁 102邓 103洪 104石 105崔 106吉 107邢 108陆 109翁 110储 111全 112宫 113仇 114刘 115景 116詹 117叶 118屠 119乔 120翟 121谭 122牛 123尚 124瞿 125冷 126沙 127竺

用七张卡片,可以编排127个不同的年龄或姓氏(如果用8张卡片,就可以编排255个)。从《百家姓》中选取127个常见的姓氏,分别与127个数一一对应就得到下面的“数与姓氏对照表” :

1赵 2钱 3孙 4李 5周 6吴 7郑 8王 0000001 9冯 0001101 17许 0010001 25金 0011001 33潘 0100001 41方 010100 49费 0110001 57郝 0111001 65黄 1000001 73宋 1001001 81季 1010001 89邱 1011001 97莫 1100001 105崔 1101001 113仇 1110001 121谭 1111001

0000010 10陈 0001110 18何 0010010 26魏 0011010 34葛 0100010 42俞 0101010 50薛 0110010 58安 0111010 66萧 1000010 74茅 1001010 82贾 1010010 90高 1011010 98房 1100010 106吉 1101010 114刘 1110010 122牛 1111010 0000011 11蒋 0001111 19吕 0010011 27姜 0011011 35奚 0100011 43任 0101011 51雷 0110011 59于 0111011 67尹 1000011 75熊 1001011 83江 1010011 91夏 1011011 99缪 1100011 107邢 1101011 115景 1110011 123尚 1111011 0000100 12沈 0010000 20张 0010100 28戚 0011100 36范 0100100 44袁 0101100 52贺 0110100 60卞 0111100 68姚 1000100 76纪 1001100 84郭 1010100 92蔡 1011100 100解 1100100 108陆 1101100 116詹 1110100 124瞿 1111100 0000101 13韩 0000101 21孔 0010101 29谢 0011101 37彭 0100101 45柳 0101101 53倪 0110101 61齐 0111101 69邵 1000101 77祝 1001101 85梅 1010101 93田 1011101 101丁 1100101 109翁 1101101 117叶 1110101 125冷 1111101 0000110 14杨 0000010 22曹 0010110 30柏 0011110 38鲁 0100110 46鲍 0101110 54汤 0110110 62余 0111110 70汪 1000110 78董 1001110 86林 1010110 94胡 1011110 102邓 1100110 110储 1101110 118屠 1110110 126沙 1111110 0000111 15朱 0000011 23严 0010111 31窦 0011111 39马 0100111 47史 0101111 55殷 0110111 63顾 0111111 71毛 1000111 79梁 1001111 87刁 1010111 95万 1011111 103洪 1100111 111全 1101111 119乔 1110111 127竺 1111111 0001000 16秦 0000100 24华 0011000 32苏 0100000 40花 0101000 48唐 0110000 56罗 0111000 64孟 1000000 72戴 1001000 80杜 1010000 88徐 1011000 96卢 1100000 104石 1101000 112宫 1110000 120翟 1111000 0000000

准备好以上七张卡片,外加这张“数与姓氏对照表” (每个姓氏下边方框中的数,是为了说明问题而加上去的),就可以来表演这个猜年龄和姓氏的魔术了。

先说猜年龄:

这套卡片可以用来猜127岁以内的年龄。表演者一张一张地出示这七张卡片给某位观众看,只要这位观众一一回答七张卡片上“有”、“无”自己的年龄,表演者就能“猜”出这位观众的年龄。

这种“猜”年龄的方法很简单,表演者只需将观众回答“有”的那几张卡片的左上角的数字加起来,所得的和就是这位观众的年龄。比如,某位观众对七张卡片的年龄回答如下:

Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ 无 有 有 有 有 无 无

表演者只需将Ⅰ、Ⅲ、Ⅴ三张卡片的左上角的数字2、4、8、16加起来,得到的30就是这位观众的年龄。读者可以验证,30这个数确实只有卡片Ⅱ、Ⅲ、Ⅳ、Ⅴ上才有。

猜姓氏与猜年龄基本相似,只是表演者将观众回答上面“有”他姓氏的那几张卡片的左上角的数字加起来后,还得找出这个和所对应的姓氏。比如,某位观众对七卡片的姓氏回答如下:

Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ 无 有 有 无 有 无 无

表演者只先将Ⅱ、Ⅲ、Ⅴ三张卡片的左上角的数字2、4、16加起来,得到22,再从“数与姓氏对照表”中得到22这个数所对应的姓氏是“曹”,那么这个观众就一定姓“曹”了。

这个魔术,看起来神乎其神,其实原理并非高深莫测。我们只需有一点二进制数的知识,就能揭示其中的奥秘。让我们来看卡片的编制方法:

第一步,把1——127这些正整数都转换为二进制数(转换结果参见“数与姓氏对照表”中每个姓氏下边方框里的那些数)。

第二步,把二进制数中20位(从右至左的第1个数位)上是“1”的所有数填入卡片Ⅰ中,把21位(从右至左的第2个数位)上是“1”的所有数填入卡片Ⅱ中,把2位(从右至左的第3个数位)上是“1”的所有数填入卡片Ⅲ中,依次类推。比如,118这个数转换为二进制数是1110110,它在第2(按从右至左的顺序,下同)、第3、第5、第6、第7个数位上的数都是“1”,我们就把它填入卡片Ⅱ、Ⅲ、Ⅴ、Ⅵ、Ⅶ中;它在第1、第4个数位上的数都是“0”,在卡片Ⅰ、Ⅳ中就不填。

这样,七张卡片分别对应着二进制数中的7个数位。于是,当某位观众回答表演者哪几张卡片上有无他的年龄时,实际上就等于告诉表演者他的年龄的二进制数哪几位是“1”,哪几位是“0”。那么,表演者要做的事情就是把这个二进制数转换为十进制数。比如,某位观众对七卡片的年龄回答如下:

Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ 有 有 有 无 有 有 无

那么,实际上他就已经把自己年龄的二进制数0110111告诉表演者了。把二进制数0110111转换为十进制数:

2

0110111=0×2+1×2+1×2+0×2+1×2+1×2+1×2

6543210

=0+32+16+0+4+2+1=55

但在实际转换时,注意到二进制数的各位2所对应的十进制数已经写在代表这个数位的卡片的左上角了。因此表演者只需把观众回答“有”的那几张卡片的左上角的数字加起来就行了,即1+2+4+16+32=55。

至于卡片中姓氏的编排,不过是根据事先随意编好的“数与姓氏对照表”,把每个姓氏写在与它对应的数的位置上而已。

最后,顺便指出,表演过程中的“转换”工作,是在对方回答“有”或“无”的同时进行的。我们只需记住第Ⅰ张有→+1,第Ⅱ张有→+2,第Ⅲ张有→+4,第Ⅳ张有→+8,第Ⅴ张有→+16,第Ⅵ张有→+32,第Ⅶ张有→+64,转换是非常方便的。另外,如果你打算自己制作另一套纯姓氏卡片的话,那么最好把那些填在卡片上的姓氏的次序打乱,使观众不容易发现填写卡片的“规律”,这样就更能迷惑人。

n-1

联系客服:779662525#qq.com(#替换为@)