- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
随机数:机会全无课案
随机数:机会全无
David Austin
关键词:?随机数,随机检验
人们常说数学就是关于如何理解各种各样的模式,而这些模式使得数学变得美丽多彩。然而本文是关于数学怎样可以用来产生或模拟缺乏模式的随机性。令人惊讶的是,我们将会看到,很难产生随机行为,同时更难判断何时我们已经成功产生随机行为。某种意义上,产生随机性这句话听起来都有点刺耳。
本文将专注于构造随机数。为什么要构造随机数的原因很多。千百年来,人们一直在使用随机性,比如抛硬币来决定某些命运或输赢。今天,人们也使用随机数搞彩票,以确定巨额资金的获得者。
当前,很多网络信息或信用卡信息需要通过安全确认,随机数就被用来形成加密密钥。另一方面,随机数也可以用来模拟真实世界的现象。例如,经营自动取款机网络的银行设计的软件,常常通过随机时间随机取款机来模拟客户访问自己的帐户来测试软件的功能。
随机数的另一个应用是著名的蒙特卡罗算法。所谓的蒙特卡罗方法对极难获得精确解的问题用随机数方法来获得数值逼近。例如,假设我们不知道单位圆的面积公式。如何计算它的面积呢?我们可以把单位圆放进一个面积已知的正方形里面(如下图),并在正方形上随机加点。落在圆内的点数的百分比应该近似于圆的面积和正方形面积的比。下图显示了随机放在一个边长为2.2的正方形上的2000个点,其中1308个点落在圆内。圆的近似面积等于正方形的面积4.84乘上1308/2000,结果是3.16536(当然,圆的精确面积是)。这已经比较接近单位圆的面积值了。如果撒的点更多,比如说10000个,得到的近似值将更精确。
随机数来自何处?
我们大多数人对随机数已有一个直观概念,但是正如我们将要看到的,随机数是一个很难准确回答的问题。简单地说,我们应该无法使用已经看到的数来预测接下来的数。例如,你可能希望掷一个理想骰子。每掷一次,1至6之间的每一个数字出现的可能性一样。如果我们掷了很多次,我们可以期望看到六个可能性的每一个大概是时间的六分之一。此外,如果我们每次扔两次骰子,得到一对结果(i,j),i和j取1到6间的一个数,这将出现了36个可能的对子。数数每一对结果出现的个数,我们会期望36种可能对的每一个出现的频率大致相等。然而,即使前一千次都是“1”出现,掷第1001次时,1至6之间的每个数字显示的可能性还是一样。
乍一看,产生随机数看起来像一个简单的事情,你可能会认为可以通过例如有意识地写上0和1组成的序列就能做到这一点。假设你写了一个一百个0和1的序列,它可用来被本文后面给出的一些测试来分析。如果你的序列通过这些测试,它与真正的随机序列共享几个性质。但是,你很可能会发现很难写出一个序列通过这些测试。人类试图通过创建“随机行动”来产生随机序列这件事是有困难的。
自然现象极有可能产生真正的随机数序列。网站HotBits记录放射性粒子衰变时所产生的随机序列。例如,两个衰变之间的时间被记录下来并与下两次之间的时间相比。如果第一次时间比第二次短,记“0”;如果第一次比第二次长,则记“1”。这种方式产生了一系列随机位,连接在一起形成随机整数。另一个网站Random.org以类似的方式记录大气噪声的幅度。
一个有趣的问题是:无理数给出的数字是否形成一个随机序列?在看过它前面上万亿数字后,数值的证据显示答案有可能是肯定的。但严格的结论还很难仅凭观察得出。
随机数产生器
现实生活中,许多应用需要我们能够在计算机内创造有效的随机数。这听起来似乎是不可能的:电脑仅仅执行一系列的指令,其输出由输入决定。由于人们给计算机提供指令和输入、输出也应由人们的选择决定。那怎么能使这样的一个序列数是随机的?
答案是否定的。可我们能做的是使用一个程序来隐藏我们的足迹,使得生成的数列给人以随机的错觉。更确切地说,我们希望计算机生成的数共享真正的随机序列所享有的许多属性。由于生成的不是真正的随机数,这样的程序通常被称为伪随机数产生器,但是我们按照惯例使用随机数产生器这一术语。本文的讨论很多取自参考文献中给定的Donald Knuth在《计算机程序设计艺术》第2卷中的论述。
计算机的创始人之一冯?诺伊曼提出了下述的随机数产生方法。假设我们想产生一个8位数的随机序列,我们先给定一个初始值,下一个随机数取自的中间八位数。例如, 给定这时=1252162343440836,去掉其首尾各4位数,得到下一个数 这样重复做几次,就得到下表:
乍看之下很难发现这些数的模式,我们可能认为这是找到随机数的一个合适方式。换句话说,我们已经通过一个确定性的过程产生了随机感觉。然而,进一步的研究表明,这不是一个好的随机数产生器。序列中的每一项只取决于前一项,并且只有有限多个可能的项(这个序列少于个不
文档评论(0)