我们如何知道序列是伪随机还是真随机?

时间:2015-08-11 14:01:29

标签: random

给定一个序列(ex 1 4 3 5 3 6 .....)及其范围(ex 1-10),知道它是从"随机生成器"生成的。
如何知道" Random Generator"是伪随机或真随机(假设序列是无限的)。

2 个答案:

答案 0 :(得分:4)

显然,you can't。首先,你唯一可以观察到的是有限数字序列。即使序列是真正随机的,每个可能观察到的序列也将具有非零概率。你可以连续观察20个尾巴,这与投掷一个真正公平的硬币是完全一致的。相反,任何有限序列,无论它看起来多么随机,都可以通过确定性过程生成。

话虽如此,有各种统计测试(最着名的是George Marsaglia开发的Diehard tests)可以应用于序列。他们不能确定地将序列证明为随机或伪随机,但设计不良的伪随机数发生器在这些测试中表现不佳。另一方面,如果一个序列在这些测试中表现良好,那么它或多或少是不可能的(不知道数字的来源)来判断它是来自伪随机数发生器还是真正随机的源。 50多年研究的整个是为了确保您的问题的答案有效“不 - 您无法分辨”。

答案 1 :(得分:2)

为了补充John写得很好的答案,我想补充一些评论。

首先,我确实相信每个“随机生成器”,正如你所说的那样,你得到的随机数都不是真正随机的。更进一步,我们不知道如何采用真正的“随机”数字序列。你可以获得的唯一真正随机来自量子粒子,因为它们不是决定论者,可以在某种程度上被认为是随机的。当你有一个网站或程序给你一个随机数时,它来自一个确定主义方法,理论上可以推导出,如果我们知道所有的初始条件。例如,一些更“随机”的算法使用空间的变化作为产生看似随机的结果的方式(例如,参见this random generator)。然而,如果我们能够获得瞬间T上使用的所有参数,理论上你可以“猜出一个随机数”。

但是,如果您无法识别数据中的模式,则可以执行的操作是statistical analysis数据。正如约翰所说,有许多方法可以识别随机值之间的相关性,您可以获得有关数据的一些信息。您可以在许多数学编程工具(例如Matlab,Maple等)上使用工具来尝试分析您的数据。但是,最后,你可能永远无法完全确定结果的真实性。

所以,就像John说的那样, NO ,你不能。