趣题:人的两只手十个手指头最多能数多少种数
复习微机原理实在无聊。。。想到了这个奇怪的问题
举几个栗子:
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=−∑nk=1pklog2pk
在我们的数数问题中,每种符号(0....X中每个数)的出现概率可以认为是相等的,那么即
H=log2n
设把十只手指头分成X位,每一位用Y个手指表示,那么X*Y=10,而且总信息量为
H=X⋅log2(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
posted on 2015-07-11 13:51 Pentium.Labs 阅读(970) 评论(3) 编辑 收藏 举报
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 对象命名为何需要避免'-er'和'-or'后缀
· SQL Server如何跟踪自动统计信息更新?
· 官方的 MCP C# SDK:csharp-sdk
· 一款 .NET 开源、功能强大的远程连接管理工具,支持 RDP、VNC、SSH 等多种主流协议!
· 提示词工程师自白:我如何用一个技巧解放自己的生产力
· 一文搞懂MCP协议与Function Call的区别
· 如何不购买域名在云服务器上搭建HTTPS服务
2014-07-11 三分法求极值