什么是伪随机?

时间:2013-05-30 06:16:35

标签: python random

我正在阅读随机模块的文档,并注意到它说伪随机和思想不是伪意味着假,所以我想知道这意味着它意味着什么

例如:

import random

print random.randint(1,2)
print random.randint(1,3)

这是否意味着第一个印刷语句有50%的机会打印1和50%的机会打印2

并且第二个印刷声明有33%的机会印刷一个,33%的机会印刷2等。

如果没有,那么伪随机数是如何生成的?

1 个答案:

答案 0 :(得分:7)

要产生真正的随机性,需要专门的硬件来测量随机事件,例如放射性衰变(随机)或布朗运动(也基本上是随机的)。大多数计算机显然没有这些,所以相反,你必须使用一个非常复杂,均匀分布,难以预测的“伪随机”算法,该算法以一个由例如当前时间戳确定的数字开始。这种算法对于需要“随机性”的标准用例来说已经足够好了,只要你小心不要为具有相同时间戳的两个随机数生成器(例如在不同线程上同时启动它们)播种,这将使得他们做同样的事情。这种随机数发生器的一个常见例子是Mersenne Twister:http://en.wikipedia.org/wiki/Mersenne_twister

提供真正随机值的网站,解释了很多关于随机性和伪随机性的内容,并且有一些关于其随机性的美味统计数据:http://www.random.org/(参见了解更多信息和统计数据)(实际上它似乎依赖于测量微小波动在一个混乱的系统中,例如大气噪声,但是统计数据表明它与真正的随机性非常相似,你无法分辨它!)