理论教育 互联网实现公平硬币投掷:神奇的数学讲座!

互联网实现公平硬币投掷:神奇的数学讲座!

时间:2023-12-06 理论教育 版权反馈
【摘要】:令人吃惊的是,我们的确可以通过互联网来实现硬币的公平投掷,而个中原理则来自数学中的质数概念。但是,本质上来说,这说明当我们检查小于某个特定数字的所有质数时,其中会有一半在除以4后得出余数1。这一现象可以用在投掷“网络硬币”的过程之中。掷完硬币及得出乘积后,我就把结果发往位于东京的象棋对手。相乘得出上述数字的两个质数分别是89和73,均代表硬币的正面。

互联网实现公平硬币投掷:神奇的数学讲座!

纠错码帮助我们传递清晰明确的讯息。不过,我们常常也需要用电脑来发送秘密的讯息。过去,苏格兰的玛丽皇后、尼尔森勋爵等试图交换机密信息的人们,总要事先与他们的代理人会面以商定一种双方将共同使用的密码。在当今的计算机时代中,我们也常常需要发送一些秘密信息。比如,网上购物时,我们需要向素未谋面的人、向刚刚点击的网站发送我们的信用卡信息。如果依靠以前的方式——人们需要事先见面以商定共用的密码,当然不可能实现互联网交易。幸运的是,数学为我们提供了一种解决方案

为解释这一点,我们先来看一个简单案例。假设我要在互联网上找人下象棋。我住在伦敦,而对方住在东京,我们想通过投掷硬币来决定谁先谁后。“正面还是反面?”我给对手发了一封电子邮件。他回复说要正面。我掷了硬币。“反面,”我告诉他,“我先来。”可这样怎么能确保在整个过程中我没有撒谎呢?

令人吃惊的是,我们的确可以通过互联网来实现硬币的公平投掷,而个中原理则来自数学中的质数概念。除2以外,所有质数都是奇数(而由于2是其中唯一一个偶数,所以它是个“奇特的”质数)。而如果我们把这些质数除以4,则会得到余数1或3。比如,17除以4得余数1,23除以4则得余数3。

正如我们在第1章中了解到的那样,古希腊先贤们在两千年前便已证明出质数的数量是无穷无尽的。但在所有这些质数中,除以4得余数1的质数是否也无穷无尽呢,除以4得余数3的呢?这是皮埃尔·德·费马在350年前向数学家们提出的众多挑战之一,但是,这个问题的答案一直要等到19世纪才由德国数学家古斯塔夫·勒热纳·狄利克雷给出。他通过一些无比复杂的数学运算证明出在所有这些质数中,有一半会得出余数1,另外一半则得出余数3——不存在谁多谁少的现象。当涉及无穷时,数学家们所说的“一半”也并不是一件容易理解的事情。但是,本质上来说,这说明当我们检查小于某个特定数字的所有质数时,其中会有一半在除以4后得出余数1。

因此,一个质数除以4得出余数1或3的几率和一枚公平的硬币掷出正面或反面的几率没有什么不同。为了更加清楚地解释投掷硬币这个问题,我们现在把两个问题互换一下,用除以4得余数1的质数表示硬币正面,而用除以4得余数3的质数表示硬币反面。接下来便是数学的聪明之处。如果我找来2个质数,比如17和41,这2个都能表示硬币的正面,即两者除以4均得到余数1。现在把这2个数字相乘,其结果除以4仍然得到余数1——41×17=697=174×4+1。如果我找2个都表示硬币反面的质数,即除以4得余数3的质数,比如23和43……那么,结果就有点出人意料了。当我把上述2个数字相乘后,所得的数字除以4后得到的余数也是1。23×43=989=247×4+1。这就说明,从质数的乘积中无法得知原来的质数代表正面还是反面。这一现象可以用在投掷“网络硬币”的过程之中。

掷出一枚硬币,如果显示为正面,我就选择2个代表硬币正面的质数,并将这2个数字相乘。如果为反面,便选择2个代表硬币反面的质数,也将这2个数字相乘。掷完硬币及得出乘积后,我就把结果发往位于东京的象棋对手。这个结果是6497。由于质数相乘的结果除以4后所得出的余数永远都是1,那么他便无法从中辨别出我所选择的质数到底是代表正面还是反面的。现在,他得说出是要正面还是反面了。

要知道最后的结果,我只需将所选的两个质数发给他看即可。相乘得出上述数字的两个质数分别是89和73,均代表硬币的正面。由于相乘得出6497的质数除了89和73以外不可能有其他数字,因此,关于数字6497,我已经提供了足够的信息证明自己没有作弊,但是,这个过程并不能保证对方没有作弊。

实际上,这么说并不严谨。如果他能破解出数字6497是由质数89和73相乘得出的,那么他便会押硬币正面,但只要我选择的质数足够大(远远大于两位数),那么,即使借助于现有的计算工具,要破解出源质数也几乎是不可能的。类似的原则也应用在信用卡号码在网络传输的加密流程中。(www.daowen.com)

一个简单的难题

现在我已经掷了硬币,分别从硬币的正面和反面堆中挑出2个质数,再把这2个数字相乘。结果,得出的数字是13 068 221。那么,你能猜出我刚才掷的硬币是正面还是反面吗?试着在不借助电脑的情况下回答这个问题。(答案在本章结尾处。)

一个很难的难题

要是相乘得出的数字是

5 759 602 149 240 247 876 857 994 004 081 295 363 338 151 725 852 938 901 132 472 828 171 992 873 665 524 051 005 072 817 707 778 665 601 229 693

你还猜出我掷的硬币是正面还是反面吗?这次你可以借助于电脑。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈