zoukankan      html  css  js  c++  java
  • 趣题:人的两只手十个手指头最多能数多少种数

    复习微机原理实在无聊。。。想到了这个奇怪的问题

    举几个栗子:

    1)  如果十个手指每一个表示一个数【就像幼儿园老师一开始教的那样】,一个手指都不伸出表示0,伸出第一个手指表示1,第二个表示2,......,可以数出11种数(0..10)

    2)  如果稍微改一下,两只手每一只表示一位,那么对于每只手,就有:

    手势 表示的数字
    一个手指都不伸 0
    伸出第一个手指 1
    第二个 2
    第三个 3
    第四个 4
    第五个 5

       这样一只手可以表示6种信息。两只手加起来呢?由乘法原理,可以数出6*6=36种

       【原来幼儿园老师在骗我 Σ(っ °Д °;)っ

    3)  如果每个手指表示一位呢?对于每个手指,伸出表示1,不伸出表示0

       那么两只手就构成了一个十位的二进制数,范围从0(0000000000)到1023(1111111111),能数1024种

       【二进制的威力果然无穷 _(:з」∠)_

    从上面来看好像第三种最厉害的样子。。那么能否证明呢?

    首先我们引出第一个概念:信息量

    设一个信息由n个符号表示,第k个符号出现的概率是Pk,那么

    $H=- sum ^{n}_{k=1}p_{k}log_{2}p_{k}$

    在我们的数数问题中,每种符号(0....X中每个数)的出现概率可以认为是相等的,那么即

    $H=log _{2}n$

    设把十只手指头分成X位,每一位用Y个手指表示,那么X*Y=10,而且总信息量为

    $H=Xcdot log _{2}(Y+1)$      //Y+1是因为还要考虑到0的情况

    那么上面的问题就转化成了求这个函数的极值的问题。

    这是个减函数,而我们的Y的取值又是离散的[1..10],所以当Y=1的时候信息量H最大,也就是用二进制表示。

    如果换种方式呢?比如3、2、3、2(分四位,每一位的手指头数分别是3,2,3,2),那么H=log2(3)+log2(2)+log2(3)+log2(2)≈7.17,还是不如二进制。蛤蛤

    由这个奇怪的问题可以接着扩展出信息熵的概念:信息熵可以理解为事件整体的信息量的数学期望值。

    下面的柿子中,Pk表示第k种可能事件的概率,log2(1/Pk)即这种可能事件的信息量

    事件的不确定性越大,那么它的其中一种可能性的信息量就越大,总体的信息也越大。

    如果一个事件是确定的(即概率为1),那么信息熵就是0了。

     另外还发现RuanYifeng大神一篇好玩的小文章:http://www.ruanyifeng.com/blog/2014/09/information-entropy.html

    //Reference: https://zh.wikipedia.org/wiki/%E4%BF%A1%E6%81%AF%E8%AE%BA

  • 相关阅读:
    SQL Sever语言 存储过程及触发器
    计蒜客 挑战难题 移除数组中的重复元素
    projecteuler Sum square difference
    码农谷 求前N项之和
    projecteuler Smallest multiple
    计蒜客 挑战难题 寻找插入位置
    Largest palindrome product
    计蒜客 挑战难题 元素移除
    码农谷 球从M米高度自由下落第N次落地时反弹的高度
    挑战难题 奇怪的国家
  • 原文地址:https://www.cnblogs.com/pdev/p/4638523.html
Copyright © 2011-2022 走看看