计算机中的随机函数

计算机中的随机函数

  随机函数是计算机科学数学函数中较难理解和使用的一个,本文根据教学实践谈谈对随机函数及其应用的认识和体会。
  关键词计算机 函数
  中图分类号TP311 文献标识码A 文章编号1007-9416(2011)11-0197-02
  
  1、随机数与随机函数的概念
  所谓随机数(Random)是指事先不能确定的数,只有当相应的事件发生后其值才能确定。自然界和社会生活中存在着大量的随机现象和随机事件。臂如,抛5分钱硬币,我们事先不能确定结果是正面朝上还是反面朝上,只有当钱币被抛下后,我们才知道是正面朝上还是反朝上。
  既然事先不能确定随机数的值,那么这样说来,随机数是不是就不可捉摸了呢?答案是否定的。经过大量观察和科学试验发现,随机数是有规律可循的,它遵循两条规律(1)有一定的取值范围。抛硬币的结果无非是正面或反面朝上,不会出现在这之外的结果,也就是取值范围是{X|X=“正面” OR X=“反面”}。(2)当大量发生时随机数的分布是均匀的。当我们抛硬币的次数较少时,统计出的出现“正面”和“反面“的次数会相差较大,但当抛下的次数较大(如抛下10000次)时,统计出的出现“正面”和“反面“的次数会相差较小,我们可以组织学生进行这样的有趣试验。有试验表明当抛下10000次时,“正面”和“反面”各出现4978次和5022次,与均匀数字10000/2(5000)相差22,占0.44%(22/5000),从图1直观地看代表“正面”和“反面”的两根数据条一样高,达到了“均匀”。(如图1)
  计算机中,采用模拟的方法运用随机函数产生随机数。不同的计算机软件产生的随机数方式、函数名有所不同,但都遵循随机数的上述两条规律。
  例如,在EXCEL中,随机函数RAND()产生的随机数满足(1)0≤RAND()<1即取值范围为[0,1)。(2)当大量调用时产生的随机数均匀分布。
  参照图2。图2中的数据来源于表1。当产生的随机数是4行、11列共44个(4*11)时,从相应的图表可直观地看出数据的分布不均匀。
  当产生的随机数扩展到73行、11列共803个(73*11)时,从相应的图3可直观地看出数据呈均匀分布状态。可以预测数据俞多,其分布俞均匀。(如表1)
  掌握了随机数和随机函数的规律,我们就可以运用计算机解决许多实际问题,如随机抽取试题、考试选题单的制作、随机摇号、数学测试题、游戏中的随机事件等等。
  2、随机函数的应用
  示例 创建一个命名为MR.XLS的EXCEL文档,在其中创建一个名为MR的宏,快捷键为CTRL SHIFT R,功能为产生一个三位整数。
  分析问题的实质就是构造一个数学式子,产生整数区间[100,1000)。EXCEL提供了随机函数RAND()。因为0≤RAND()<1,所以左中右三边同乘(1000-100),得到0*(1000-100)≤(1000-100)* RAND()<1*(1000-100),即0≤(1000-100)* RAND()<1000-100。从而,不等式左中右三边同时加100,得到100≤100 (1000-100)* RAND()<1000。所以INT(100 (1000-100)* RAND())即达到问题的求。
  操作步骤(采用EXCEL2003)
  第一步打开EXCEL,新建工作薄,保存为MR.XLS。
  第二步选择“工具”菜单,从弹出的菜单中选中“宏”,再从中选择下一级菜单“录制新宏”,进入“录制新宏”会话框。
  第三步在“录制新宏”会话框中设置各参数宏名为“MR”,快捷键为CTRL SHIFT R,保存在为“当前工作薄”,选择“确定”,进入宏录制现场。
  第四步在当前单元格中输入“= INT(100 (1000-100)* RAND())”。
  第五步选择宏录制工具条上“停止”按钮。整个录制工作结束。(如图2图3)
  高级程序设计语言中随机数函数的使用关键常涉及到区间构造问题。一般地,区间[a,b)可以通过如下式子得到a (b-a)* RAND()。其中,a是区间的起点,b是区间的终点,b-a 是区间的长度。得到整数区间[a,b),用以下式子可得INT(a (b-a)* RAND())。具体例子不再赘述。