今天的算法课上,老师提到了计算机中的随机数。他说计算机中的随机数并不是真正意义上的随机,而是伪随机数,即这个随机数必须要以一个种子做为输入,比如说C语言中的random()函数,它事实上是以系统时间为输入种子,通过相关的运算产生的数,如果输入的种子相同,那么产生的随机数序列是一样的。我当时在思考,什么是真正的随机?
随机性一般有两种内涵:事件的因果链彻底消失;事件不可预测。这是我找到的关于随机的一个定义(我想大家都能看懂这个定义)。下面我说说我的理解。
首先,真观上讲,一个事件是随机的,当且仅当他会在一定范围内会发生,并且我们不能确定他会是这个范围的哪一个。那么,他有一个不确定性。同时,他肯定会发生,只不过我们不知道他将是哪一个。从小老师就给我们举随机的例子,我们将一枚硬币抛向空中,硬币落地停止时要么是正,要么是反。这个事件是随机的,正和反必然有一个会发生,它们发生的概率分别是1/2,但是我们在抛的时候不能确定到底是正还是反。我们称之为随机。再比如说投骰子,1-6点,我们投的时候并不知道他会是哪一点,但是它必然会是1-6之间的一种。
那么,我在想,事实上,比如说抛硬币,正和反这两种结果肯定是由于一定的物理条件造成的(假设这些物理条件为:力度,方向,空气阻力),那么这种物理条件我们称之为输入。设想一下,当我们每次抛硬币时输入都一样时(这里假设我们可以控制空气的阻力,因为如果空气的阻力是随机的,那么我们再递归深一层即可),得到的必然是相同的结果,也就是说,随机不再是随机。同样的,投骰子我们可以做相同的事。
那么,随机是什么?是否我们现在定义的随机,只是由于我们对技术操作(比如控制抛硬币的输入)的不完备而造成的?进一步讲,拿到我目前学的计算机理论上来讲这个问题,即是:随机到底是不是可计算的?
我不知道这个问题在计算机、哲学上有没有人研究过,不过,我只是谈谈我个人的看法,可能会怡笑大方,不过作为一个做学问的研究生,怡笑大方并非什么见不得人的事,我会继续思考,还请读到这篇文章的人多多指点。