我正在阅读 random 模块的文档并注意到它说的是伪随机并且认为伪不是意味着 False 所以我想知道它说的是什么意思
例如:
import random
print random.randint(1,2)
print random.randint(1,3)
这是否仍然意味着第一个 print 语句有 50% 的机会打印 1 和 50% 的机会打印 2
并且第二个打印语句有 33% 的机会打印一个,33% 的机会打印 2 等等。
如果不是那么伪随机数是如何生成的?
请您参考如下方法:
要产生真正的随机性,需要专门的硬件来测量随机事件,例如放射性衰变(随机)或布朗运动(本质上也是随机的)。大多数计算机显然没有这些,因此您必须使用一种非常复杂、均匀分布、难以预测的“伪随机”算法,该算法以由例如当前时间戳确定的数字开头。这样的算法对于需要“随机性”的标准用例来说已经足够好了,只要您注意不要为两个具有相同时间戳的随机数生成器播种(例如,在不同的线程上同时启动它们),这将使他们做同样的事情。这种随机数生成器的一个常见示例是 Mersenne Twister:http://en.wikipedia.org/wiki/Mersenne_twister
一个提供真正随机值的站点,对随机性和伪随机性进行了大量解释,并提供了一些关于其随机性的有趣统计信息:http://www.random.org/ (参见了解更多和统计数据)(它实际上似乎依赖于测量混沌系统中的微小波动,例如大气噪声,但统计数据表明它非常像真正的随机性,你无法区分它!)
