java 伪随机数 机制 研究与应用_伪随机数在Java中的应用研究

随机数在软件设计领域中得到很广泛的应用。伪随机数是指用数学递推公式所产生的随机数,获取这种数的最简单和最自然的方法是利用计算机语言的函数库提供的随机数发生器。不同的开发环境提供的生成随机数的函数和方法不一样。其中应用得最为广泛、研究最彻底的一个算法即线性同余法。Java作为一种应用广泛的面向对象的编程开发语言,对随机数生成提供了多种途径,以适应各种不同的设计要求。1Java中伪随机数生成机制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)modm)其中种子参数seed可以任意选择,常常将它设为计算机当前的日期或者时间;m是一个较大数,可以把它取为2W,W是计算机的字长;a可以是0.01W和0.99W之间的任何整数。1.2Java的Random类Java中提供Random类产生伪随机数。Random类使用48位的种子,使用线性同余公式对其进行修改[1-2]。一旦用一个初值创建Random对象,就可以得到一系列的随机数。在Random类中,Java设计者使用Random()构造方法来初始化Random对象。RandomrandomGenerator=newRandom();Random()使用当前的系统时间即System.currentTimeMillis()作为发生器的种子。随机数发生图1JavaRandom类图器即Random对象产生以后,可以通过对象调用不同的函数:nextInt()、nextLong()、nextFloat()、nextDouble()等来获得不同类型的随机数。intrandomNumber=randomGenerator.nextInt(n);其中用到了Random类的nextInt方法。通过nextInt方法产生的随机数的范围应根据特定应用程序需要的不同而不同。当给nextInt方法传递参数n时,由nextInt方法所返回的值的范围为0到n减1。2应用分析2.1掷骰子游戏1)问题分析软件设计开发本栏目责任编辑:谢媛媛ComputerKnowledgeandTechnology电脑知识与技术第6卷第3期(2010年1月)掷骰子游戏中,游戏者将滚动两个骰子。每一个骰子有六个面,分别代表1,2,3,4,5,6这六个点。当骰子停下以后,得到两个随机产生的数,计算这两个骰子上面的点数和,根据此点数和判断玩家是否输赢。2)类定义根据问题分析,为该应用程序创建骰子类Dice与测试类TestDice,类关系图如图2。为了能在掷骰子游戏应用程序中使用随机数,需要导入java.util包的Random类。Dice类定义属性骰子点数point,以及滚动骰子rollDice和显示骰子displayDice两个方图2掷骰子游戏类图法。其中,rollDice方法用于滚动骰子;displayDice用于显示骰子的图片。TestDice类定义rule方法,可用于判断玩家是否输赢。3)类实现与GUI设计Dice类中rollDice方法关键代码如下:publicintrollDice(){point=rand.nextInt(6)+1;returnpoint;}该方法生成16(包

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值