伪随机数
随机数可以用于各种目的,例如生成数据加密密钥、模拟和建模复杂现象以及从更大的数据集中选择随机样本。它们在美学上也被使用过,例如在文学和音乐中,当然在游戏和赌博中也很流行。当讨论单数时,随机数是从一组可能的值中抽取出来的,每个值都是等可能的;当讨论随机数序列时,每个被绘制的数字必须在统计上独立于其他数字。
随着计算机的出现,程序员认识到有必要在计算机程序中引入随机性,然而,令人惊讶的是,要让电脑偶然地做一些事情是很困难的。计算机盲目地听从指令,因此是完全可以预测的。使用计算机生成随机数的主要方法有两种:伪随机数生成器(PRNGs)和真随机数生成器(TRNGs)。这两种方法有不同的特点,各有利弊。
Pseudo-Random Number Generators (PRNGs)
正如“伪随机数”这个词所暗示的那样,伪随机数并不是你所期望的那种随机数字,至少在你用来掷骰子或买彩票的时候不是这样,从本质上说,PRNGs是一种算法,它使用数学公式或简单的预计算表来生成随机出现的数字序列。线性同余法是PRNG的一个很好的例子。对伪随机数理论进行了大量的研究,而生成伪随机数的现代算法非常好,以至于这些数字看起来完全是随机的。
如果将计算机生成的随机数与骰子掷出的点数进行比较,就很容易理解PRNGs和TRNGs之间的基本区别。因为PRNGs通过使用数学公式或预先计算的列表生成随机数,所以使用一个对应于某人多次滚动骰子并写下结果。每当你想要一个骰子,你就会得到名单上的下一个。实际上,这些数字看起来是随机的,但实际上它们是预先确定的。TRNGs的工作原理是让一台电脑实际滚动骰子——或者,更常见的是,使用一些比骰子更容易连接到电脑的物理现象。
PRNGs是高效的,这意味着它们可以在短时间内生成许多数字,并且是确定性的,这意味着如果序列中的起始点已知,一个给定的数字序列可以在稍后的日期被复制。PRNGs通常也是周期性的,这意味着序列最终会自己重复。虽然周期性从来都不是一个理想的特征,但现代PRNGs的周期太长,以至于在大多数实际情况下都可以忽略它。
这些特性使prng适用于需要许多数字的应用程序,并且在这些应用程序中,相同的序列可以很容易地重播。这种应用程序的常见示例是模拟和建模应用程序。prng不适用于那些数据不可预测的应用程序,比如数据加密和赌博。
值得注意的是,尽管好的PRNG算法存在,但它们并不总是被使用,而且很容易出现令人讨厌的意外情况。以流行的web编程语言PHP为例。如果你在GNU/linux中使用PHP,你很可能会对你的随机数非常满意,然而,如果您在Microsoft windows中使用PHP,您可能会发现您的随机数并不完全符合2008年可视化分析中的要求。另一个例子可以追溯到2002年,当时一名研究人员报告说,MacOS上的PRNG不够好,无法对病毒感染进行科学模拟。最重要的是,即使PRNG能够满足应用程序的需求,您仍然需要小心使用哪一种。
True Random Number Generators (TRNGs)
与PRNGs相比,TRNGs从物理现象中提取随机性并将其引入计算机。你可以把它想象成一个连接到电脑上的骰子,但通常人们使用的是一种物理现象,它比连接电脑更容易。物理现象可以很简单,比如鼠标移动的细微变化或者按键之间的时间长短。然而,在实践中,您必须小心选择哪个源。
然而,有许多其他的方法可以让你的计算机具有真正的随机性。放射性物质是一种很好的物理现象,辐射源衰变的时间点是完全不可预测的,它们很容易被检测出来并输入计算机,避免了操作系统中的任何缓冲机制。瑞士Fourmilab的HotBits服务是使用这种技术的随机数生成器的一个很好的例子。另一种合适的物理现象是大气噪声,用普通收音机很容易就能接收到。这是RANDOM.ORG所使用的方法。你也可以使用来自办公室或实验室的背景噪音,但你必须注意模式,你电脑里的风扇可能会造成背景噪音,因为风扇是一个旋转装置,它产生的噪音很可能不会像大气噪音那样随机。
只要你小心,可能性是无限的。毫无疑问,视觉上最酷的方法是lavarand发生器,它是由硅图形和熔岩灯的快照来生成真正的随机数。不幸的是,lavarand已经不能使用了,但是它的一个发明者正在LavaRnd网站上进行这项工作(没有熔岩灯)。另一种方法是java EntropyPool,它从各种来源(包括HotBits和random)中收集随机比特。也可以从网页上访问,由EntropyPool自己的web服务器接收。
无论使用哪种物理现象,生成真实随机数的过程都涉及到识别数据中不可预测的微小变化。例如,HotBits在放射性衰变和随机衰变之间的延迟上几乎没有变化。ORG使用了大气噪声振幅的微小变化。
TRNGs的特点与PRNGs有很大的不同。首先,与PRNGs相比,TRNGs通常效率很低,生成数字的时间要长得多。它们也是不确定性的,这意味着一个给定的数字序列不能被复制,尽管同样的序列当然可能偶然发生几次。TRNGs没有周期。
Comparison of PRNGs and TRNGs
下表总结了两种随机数生成器的特点。
Characteristic | Pseudo-Random Number Generators | True Random Number Generators |
---|---|---|
Efficiency | excellent | Poor |
DeterMinism | Determinstic | Nondeterministic |
Periodicity | Periodic | Aperiodic |
这些特性使TRNGs适合于PRNGs不适合的应用程序集,例如数据加密、游戏和赌博。下表总结了哪种类型的生成器最适合哪些应用程序:
APPlication | Most suitable Generator |
---|---|
Lotteries and Draws | TRNG |
Games and Gambling | TRNG |
Random Sampling (e.g., drug screening) | TRNG |
Simulation and Modelling | PRNG |
Security (e.g., generation of data encryption keys) | TRNG |
The Arts | Varies |
相关阅读
许多香港人都说,一睡醒就要交钱给李嘉诚。这句话其实一点都不夸张。香港20个港口中最好的13个都在李嘉诚的手里,另外香港的电讯、电
客户投诉是一件很让人头痛的事情,因此要想成功地处理客户投诉,先要找到最合适的方式与客户进行交流。针对过去三年处理客诉的经验,总
昨天有一则新闻称,中国电信已撤出易信的日常运营,这真是奇怪的解读。记得在一年前易信刚刚推出时,中国电信就和网易共同宣布,双方为易
硅谷的企业家们,总喜欢把“颠覆性”挂在嘴边,不过清楚这一单词明确定义的人却为数不多。日前,在线财富顾问Wealthfront的CEO,资深硅谷
任何一个行业都有成功者和失败者。同样对于网络兼职赚钱来讲,总有人轻轻松松就赚到了钱,但有人忙来忙去就是什么都没捞到。就像今