高级Actionscirpt3.0随机数的研究

来源 :电脑迷 | 被引量 : 0次 | 上传用户:tobay1
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要 本文对随机数生成函数在Flash的應用中的弱点进行分析,并提出新的方案,并加以代码实现。
  关键词 伪随机数 随机数生成函数
  中图分类号:TP311.12 文献标识码:A
  随机数原本是为试验中得到随机结果而产生的,在统计学中经常使用随机数来抽取试验样本或者进行蒙特卡罗模拟法计算等。在现实中随机数常发生在如掷骰子、抽签、彩票等物理现象中,我们称这样的随机数叫做物理性随机数。真正意义上的物理性随机数是在实验过程中表现的分布概率,是不可预测的、不可见的;而在计算机中的随机数是按照随机数的算法模拟产生的,其结果是确定的并且也是可见的,故在计算机上利用随机函数产生的随机数,称为伪随机数。
  伪随机数在计算机中使用比较普遍,尤其在密码学上,它是利用计算机高级语言里的随机数函数与密码学中的原始理论算法相结合来生成不可逆的新密码。在我们熟知的计算机高级语言里,如C语言、Java等语言都具备对应的随机数生成函数。这些随机数生成函数的使用起来相对简单,就C语言为例:你只需在程序中调用rand()函数便可以生成0-RAND_MAX之间的随机数,要想产生整数,只需调用取整函数int( )使其数据规整即可。
  在计算机中实现随机数相当简单,这种简单使得我们在Flash的应用中缺少灵活性或许说并不能满足一些特殊场合的需求,因此,我们需在原始随机数函数Math.random( )基础上增加一些数学的技巧来实现新的随机数函数,以方便ActionScript3代码在不同环境中得到更为广泛的应用。
  在Flash游戏编程中,经常会利用随机函数来实现游戏中的随机地图和随机游戏内容等,因而对于游戏而言,强调随机函数的重要性一点也不为过。举个找茬游戏例子,几乎每局比赛的内容让玩家无法预先得知,并且每局的关键茬点也不同,这些都是对于随机元素的合理运用。自然,游戏这样做的目的在于保持有趣、不确定性以及平等,让玩家永远不知道下局会发生什么。游戏的随机性在大多数游戏中早已被广泛使用,并且除了游戏之外,也有其他地方在使用随机数,如图形效果等。随机数存在于各种现实生活的形状和大小中,各种不同的随机性就成为我们所要研究的方向。
  以下是我们如何建立函数使之完成对应的变化。
  1 整数
  让我们来看看从它的数学公式:Math.floor(Math.random() * (1 + High - Low)) + Low这是用于生成随机整数,或许你还记得。但只要在扩展一点,我们便可以看到另一方式:Math.floor(Math.random() * Range) + Low使用Range来取代(1 + High - Low)范围。
  2 非整数
  在现实当中,整数的需求并不是常见的,而非整数却不然,要想获得非整数,其实在程序实现很简单,只需去掉Math.floor(),则原先的公式变成:Math.random() * Range + Low这时随机产生的非整数便常用于随机旋转和随机大小的案例中。让我们来看个例子,要获得0到3以内的非整数,它的公式很显然就是Math.random() * 3,但需要记住它的取值范围是包括0,但不包括3。
  3 间距公式
  说到间距,一般是针对整数而言,自然在公式前又该带回Math.floor()。这一次,我们来加强难度,生成任何随机从0到100之间的奇数:Math.floor(Math.random * 50) * 2 + 1,通过Math.floor(Math.random * 50)产生0到50的随机整数,再乘以2,得到偶数,再加1,便是奇数了。如果将其总结,公式该为:Math.floor(Math.random * Range) * Spacing + Low。
  4 四舍五入
  如果生成一个0到100随机的非整数,让它们的间距为0.5时,四舍五入就起到关键性的作用。但如果不使用Math.round(),则需要变通地解决,Math.floor(Math.random * 200) / 2,先将范围扩大至200,然后通过除以2来还原范围,得到小数0.5的间距。
  5 左右数
  让我们再看另外一种间距,例如-1和1,它们分别在0的左边和右边,间距为2,我们称-1和1为左右数。其公式为:Math.floor(Math.random() * 2) * 2 – 1。
  6 素数
  最后,我们来讨论下随机素数的实现,素数并非像偶数或奇数那样间隔均匀,单纯通过数学公式很难完成,这时我们需要创建一个素数数组:var primes:Array = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29],利用数组的下标的自然数规律来实现取出随机素数的工作,其公式:primes[Math.floor(Math.random() * primes.length)]。由于范围是数组的长度并且AS3数组的下标由0开始,所以我们可以取到在素数数组中任意素数。
  7总结
  最后需要注意的是,你可以使用int()函数来取代Math.floor(),它产生的结果完全一样,但如果Math.random()乘以一个负数,在测试时,Math.floor()比int()运算速度快15倍左右。这是罕见的,所以如果要考虑运行速度的问题,则改变程序本身,使用快速代码就显得格外重要了。
  参考文献
  [1] 随机数的产生.豆丁网:http://www.docin.com/p-571025674.html.2013.
  [2] Gary Rosenzweig,ActionScript3.0游戏编程.人民邮电出版社,2012.
其他文献
摘 要 对钢井架采用电弧喷涂长效防腐,能避免恶劣的外在环境因素势必会造成井架的腐蚀,确保矿物安全。本文就以河北钢铁集团沙河中关铁矿为例,对副井井架电弧喷涂长效防腐对策进行分析研究。  关键词 铁矿;副井井架;电弧喷涂;长效防腐  中图分类号:TG174 文献标识码:A 文章编号:1671-7597(2013)18-0091-02  1 井架长效防腐的必要性  河北钢铁集团沙河中关铁矿副井井架坐落在
摘 要 在信息高速发展的今天,设计合理美观的网站既可以提升企业品牌形象、推广产品,又可以为企业寻找合作伙伴,有效的开展电子商务。本文从5个方面阐述了网页设计过程中应注意的问题,论述了人性化对网页设计的重要性。  关键词 人性化;网页设计  中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2013)18-0093-01  在信息爆炸的当今时代,互连网的触角已经深入到全世界的每个角落
摘 要 随着“十二五规划”的提出,烟草行业信息化建设明确了“集成整合”的发展方向。私有云作为新兴的IT架构,是建设一体化“数字烟草”的最佳载体。安全性是在企业应用私有云时最为担忧的问题,本文通过详细分析私有云面临的风险,结合烟草行业特征,提出了一个适用于烟草企业私有云建设的安全体系。  关键词 烟草行业;私有云;安全体系;云计算;信息安全  中图分类号:TS08 文献标识码:A 文章编号:1671
摘 要 近年来,随着我国城市化建设进程的不断加快,推动了建筑业的发展,各类工程建设项目随之不断增多。汽车起重机是工程机械中不可或缺的重要组成部分之一,其在工程建设中有着不可替代的作用。据不完全统计,截止到2012年,我国的汽车起重机销量已经突破4万台大关,对汽车起重机需求量的增加,代表着对其质量、使用寿命、维修等方面的要求越来越高。因此,加大对汽车起重机故障监测和诊断技术的研究力度尤为重要。基于此
摘 要 主要研究大型立柱铸造过程的数值模拟仿真及工艺优化。计算机数值模拟作为新兴产业主要针对中小铸件进行模拟仿真,但对于大型立柱铸件的数值模拟经验极少,大型立柱铸造过程的数值模拟仿真及工艺优化对于凭经验浇注为主的大型铸件铸造具有科学理论指导意义。  关键词 充型;凝固;缺陷预测  中图分类号:TG24 文献标识码:A 文章编号:1671-7597(2013)18-0150-01  立柱的三维实体造
科技中介机构是国家和区域创新体系的重要组成部分,是各类创新主体的粘合剂和创新活动的催化剂.尽管近年我国的科技中介机构有了较快的发展,但仍与我国的社会经济发展不相适应.为促进沟通大学、研究机构和企业间技术流动的科技中介机构产业的发展及其体系的形成,应从舆论导向、政策扶持、创新形式、自身建设、队伍建设等五个方面着手,加强科技中介机构的建设。
【摘要】本文对我国三大引文数据库的发展和现状做了简要总结。对这三大引文数据库的检索和显示功能进行了比较,从用户的检索角度,指出了中文引文数据库的发展趋势。  【关键词】引文检索 中国科学引文数据库 中文社会科学引文数据库 中国期刊全文数据库    一、引言  在文献数据库被广泛使用的今天,文献计量学中的引文分析越来越受关注。对读者而言,随着各种全文型和文摘型文献数据库的广泛使用,海量电子资源易于获