在农村或者小城镇生活的人可能都见过这样一种算命的,他首先会给你8张卡片,上面写满了姓氏,让你从里面找出有你自己姓氏的卡片,当你把所有自己姓氏的卡片给他的时候,他竟然会一口说出你的姓氏。然后你就会相信他后面所说的所有话,当然,拿钱也是毫不犹豫的事情了。 
     不过,只要是读过书的人都知道,这肯定是骗人的,都明白这个道理很简单,不就是在几张卡片中找出相同的姓氏,而且这些卡片中有且仅有一个姓氏是同时存在的。但是,大家有没有想过,一个卡片上有三四十个姓氏,你给他拿去的可能加起来就是100好几个姓氏,他是怎样一眼就看出来的呢?当然,这个也不是难题,不就是给每个卡片、每个姓氏加一个唯一的标示嘛,但仔细一样,要怎样加这个标示呢?又怎么样来快速的辨认这些标示呢?
    学过计算机的人可能一下子就明白了,“二进制”,或许能帮我们解决这个问题。大家都知道一个4位的二进制可以表示16以内任意一个十进制数,那么5位,6位...11111111这个8位的二进制数相当于10进制的255,也就是说一个8位的二进制数可以表示255以内的任意一个十进制数值。那么,我们就不难想到,取出他们的权值“1,2,4,8,16,32,64”,那么255以内的任意一个10进制数值都可以通过这8个数值中的任意个数想加得到。比如说:我们分别为8张卡片(假设为:A1,A2,A3,A4,A5,A6,A7,A8)分配上述8个数值。然后为所有姓氏分配一个唯一的大于0的数值。比如有:赵(1),钱(5),孙(14),李(43),王(90),卢(104)那么我们可以得到如下集合
A1=“赵,钱,李”;
A2=“孙,李,王”;
A3=“钱,孙”;
A4=“孙,李,王,卢”;
A5=“王”;
A6=“李,卢”;
A7=“王,卢”;
如果你是个要算命的,你给我拿来A1,A3卡片,我可以很快的算出:1+4=5,既“钱”;拿来A4,A6,A7,那就是“8+32+64=104” 既“卢”。异词类推,想必大家都已经豁然开朗。如果想通过计算机实现此功能也就相当简单了,只是对每个姓氏对应的数值转换成2进制,然后根据它的权值就可以确定这个字应该放在那些卡片里,然后把选出的卡片的值想加,再查询响应的姓氏就搞定了。
    由此我们可以清楚的认识到,不管是算命还是魔术或者其他,“骗人”只是众人的一种叫法,其实,它只是科学知识的另一种用途而已,所以,不管遇到什么让我们难以想象的事情,如果仔细想想,或许能通过自己所学来揭开它的迷团

测出你的姓氏--算命先生的“算法”分析相关推荐

  1. 社交网络算法-分析指标

    社交网络算法-分析指标 一个具体的网络可抽象为一个由节点(vertex或node) 集合V和边(edge)集合E组成的图G = (V, E),节点数 记为n = |V|,边数记为m = |E|. 衡量 ...

  2. Cibersort 算法 分析肿瘤样本免疫细胞组分

    2015年斯坦福大学医学院的一个研究团队,提出了一种分析单细胞类型的新方法.这种方法类似于分析一杯奶昔,以找到什么水果加入其中.本研究描述的方法称为Cibersort,在线发表于三月三十日的<自 ...

  3. 农村单一姓氏村庄的成因分析

    一.概述 中国农村汉族存在大量单一姓氏村民的村庄,而且呈南北,东西区域分布差异明显.汉族的姓氏来源与中国王朝制度的分封制,地域的分封命后来就成了很多该地域子民的姓氏.特别是西周时期形成的疆域分封制,西 ...

  4. 海潮音排序算法:分析与针对性提升

    template <class 形参> void 海潮音(形参 数组[], int 量) {int 标 = 0, 头 = 0, 尾 = 量;形参 转存 = 0;do{标 = 头;while ...

  5. 算法 分析 (收集)

    算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通 ...

  6. 虚拟dom与diff算法 分析

    好文集合: 深入浅出React(四):虚拟DOM Diff算法解析 全面理解虚拟DOM,实现虚拟DOM 转载于:https://www.cnblogs.com/zqzjs/p/5798107.html

  7. Apriori算法(经典的发现频繁项目集算法)分析

    基本概念 I是一个项目集合,事务数据库D是由一系列具有唯一标识TID的事务组成,每个事务t都对应I上的一个子集 支持度:项目集I1在数据集D上的支持度是包含I1的事务在D中所占的百分比 频繁项目集:对 ...

  8. 程振波 算法设计与分析_算法设计与分析

    本书按照教育部*制定的计算机科学与技术专业规范的教学大纲编写,努力与国际计算机学科的教学要求接轨.强调 算法 与 数据结构 之间密不可分的联系,因而强调融数据类型与定义在该类型上的运算于一体的抽象数据 ...

  9. 层次分析法-基于节点关键度的DTN路由算法

    当你看到一个知识点的时候,不是收藏和点赞,而是想办法转化成自己需要的知识,好记性不如烂笔头. 层次分析法 层次分析法(运筹学理论),简称AHP,是指将于决策总是有关的元素分解成目标.准则.方案等层次, ...

最新文章

  1. PHP流程控制语句例题,第四堂、php流程控制语句
  2. 服务器传感器不显示,服务器传感器不显示
  3. mastered skills
  4. C++继承时的对象内存位置(一)
  5. zcmu 4935(排序)
  6. js 动态创建注释节点 createComment
  7. php数组里面写路径,使用路径在PHP数组中进行递归搜索
  8. 抓住好资产,让你赚一辈子
  9. 电子健康行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  10. (三)java版spring cloud+spring boot 社交电子商务平台 - Spring Cloud集成项目简介
  11. git submodule详解
  12. AMESim软件包 百度云下载
  13. .net core 3.1JWT用户权限认证(二)获取token
  14. 局域网匿名访问共享文件的设置方法?
  15. Linux gpg命令
  16. 如何建立简易Rss源
  17. Kaggle: Tweet Sentiment Extraction 方法总结 Part 2/2: 金牌思路总结
  18. 让Eclipse可以自动排版
  19. [日常] SinaMail项目和技术能力总结
  20. 爱心 python 词云_爱心 python 词云_python 词云

热门文章

  1. dysms_PHP(发短信)
  2. 速卖通测评自养号怎么做?测评方法有哪些?
  3. 体外(无细胞)蛋白表达试剂盒-原核蛋白表达系统(基于大肠杆菌内源的转录和翻译机制)
  4. Word2007居然无法去掉doc文档结构图文字突出显示的底纹填充背景色
  5. PWN! 第一次测试答案及讲解
  6. 【Tiptop ERP】鼎新Tiptop ERP5.x 所有开发与管理维护 文章索引
  7. 深入剖析!快手三面面试真题
  8. 易语言高级表格写入MYSQL_易语言数据库与高级表格思路分析.doc
  9. 基于ESP8266的物联网智能插排
  10. VUE使用Three.js实现模型,点击交互,相机旋转视角跟随移动(Threejs中使用Tweenjs,含demo源码)