- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
伪随机数在Java中的应用研究
摘要:介绍了Java中伪随机数生成机制,并通过“掷骰子”和“35中7福利彩票”两个游戏模拟程序,着重阐述了伪随机数在Java软件设计中的应用。
关键词:Java;伪随机数;Random类
中图分类号:TP311文献标识码:A文章编号:1009-3044(2010)03-628-02
The Research and Application of Pseudo-random Numbers in Java
LI Xiao-ying
(Higher Vocational Technical College, Guilin University of Technology, Nanning 530001, China)
Abstract: This paper introduces the general princle of pseudo-random number generation in java. And the application of Java random number in software design is stressed and described by the two game application program examples of rolliing the dice and welfare lottery.
Key words: java; pseudo-random number; random class
随机数在软件设计领域中得到很广泛的应用。伪随机数是指用数学递推公式所产生的随机数,获取这种数的最简单和最自然的方法是利用计算机语言的函数库提供的随机数发生器。不同的开发环境提供的生成随机数的函数和方法不一样。其中应用得最为广泛、研究最彻底的一个算法即线性同余法。
Java作为一种应用广泛的面向对象的编程开发语言,对随机数生成提供了多种途径,以适应各种不同的设计要求。
1 Java中伪随机数生成机制
1.1 线性同余法
选取足够大的正整数M和任意自然数n0,a,b,由递推公式:
ni+1=(af(n)+b)modMi=0,1,…,M-1 (1)
生成的数值序列称为是同余序列。当函数f(n)为线性函数时,即得到线性同余序列:
ni+1=(a*ni+b)modMi=0,1,…,M-1(2)
以下是线性同余法生成伪随机数的伪代码:
Random(n,m,seed,a,b)
{r0=seed;
for(i=1;i=n;i++)
ri= (a* ri-1+ b)mod m)
其中种子参数seed可以任意选择,常常将它设为计算机当前的日期或者时间;m是一个较大数,可以把它取为2W,W是计算机的字长;a可以是0.01W 和0.99W 之间的任何整数。
1.2 Java的Random类
Java中提供Random类产生伪随机数。Random类使用48位的种子,使用线性同余公式对其进行修改[1-2]。一旦用一个初值创建Random对象,就可以得到一系列的随机数。
在Random类中,Java设计者使用Random()构造方法来初始化Random对象。
Random randomGenerator=new Random();
Random()使用当前的系统时间即System.currentTimeMillis()作为发生器的种子。随机数发生器即Random对象产生以后,可以通过对象调用不同的函数:nextInt()、nextLong()、nextFloat()、nextDouble()等来获得不同类型的随机数。
int randomNumber= randomGenerator.nextInt(n);
其中用到了Random类的nextInt方法。通过nextInt方法产生的随机数的范围应根据特定应用程序需要的不同而不同。当给nextInt方法传递参数n时,由nextInt方法所返回的值的范围为0到n减1。
2 应用分析
2.1 掷骰子游戏
1) 问题分析
掷骰子游戏中,游戏者将滚动两个骰子。每一个骰子有六个面,分别代表1,2,3,4,5,6这六个点。当骰子停下以后,得到两个随机产生的数,计算这两个骰子上面的点数和,根据此点数和判断玩家是否输赢。
2) 类定义
根据问题分析,为该应用程序创建骰子类Dice与测试类TestDice,类关系图如图2。
为了能在掷骰子游戏应用程序中使用随机数,需要导入java.util包的Random类。Dice类定义属性骰子点
文档评论(0)