趣题:人的两只手十个手指头最多能数多少种数

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

举几个栗子:

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

原文地址:https://www.cnblogs.com/pdev/p/4638523.html