为了你,我发明了一个爱情算法

1、张大胖和张二妮异地恋,见一面很不方面,两人只能通过电脑联系,可是由于计算机之间的通信(无线通信,光纤,双绞线等)存在信道干扰, 他们发送的消息经常出问题。
这一天,张二妮收到了一条张大胖发了的奇怪消息:
J LOWE YOV  
这是什么意思?
张大胖看到张二妮迟迟没有回复,又发了两遍,这次张二妮那边收到的消息是:
I HRVE YPU
张二妮把三条消息连起来看, 她发现,第一个位置字符 I 出现的频率最高,第二个字符L出现的频率高,第三个是O,第四个是V ...... 她终于猜出来了张大胖的心思:I LOVE YOU
本图片已被缩小,点击查看原大小图片。

2、两人周末见了面,聊起上次那让人抓狂的消息, 张二妮不满地说:“你发一堆乱七八糟的数据让我猜,想让人家当数学家啊!”
张大胖不好意地挠挠头:“这网络太差了,几个单词都出错 !不过我也明白了一个道理,通过重复发送能消除不确定性。”
张二妮说:“这怎么行?!你学计算机的,想个办法啊!”
张大胖说:“这样吧,我们搞一个错误检测的办法,以后每次我给你发送一个消息的时候,都附加上一个校验和(checksum),比如我想给你发4个数字 4 5 7 9 。”
张二妮马上打断他:“啊?难道你以后只想给我发数字了吗?”
“不是不是,我就是举个例子而已,其实计算机的所有东西都是二进制数字表示的,这个校验和是这么计算的,我把他们加起来4+5+7+9 = 25,保留个位就是5, 我把它放到消息的最后一并发给你:4 5 7 9 5。”  
张二妮说:“奥,我明白了,我收到消息以后,把前面的几个数也累加起来计算校验和,然后和5比较,如果相等,数据就是对的,如果不相等,就是错的,我就不用去搭理它了,对吧?”
张大胖发送的消息:4 5 7 9 5
张二妮收到的消息:4 5 7 8 5  
由于数据从9变成了8 ,张二妮再次计算校验和,就是4(只保留个位),和原来的不相等,表示出错。
张大胖说:“真聪明!”
可是张二妮眼珠一转,马上问道:“如果发生了这样的情况呢?”

张大胖发送的消息:4 5 7 9 5

张二妮收到的消息:4 6 7 8 5  

两个数据发生了变化,一个减1, 另外一个加1, 校验和还是5!错误检测不出来了!

张大胖叹了口气:“唉,看来这个求和算法太简单了,我得找到一个算法,得产生足够的混乱性和随机性才行。”

猜你喜欢

转载自www.cnblogs.com/shengshiwp/p/11736875.html
今日推荐