Java提供的java.util.Random类是一个伪随机数产生器,可以在指定的取值范围内随机产生数字。
Random类提供了两个构造方法:
(1)public Random():以当前时间为种子(seed)构造伪随机数生成器,因此每次实例化的Random对象所产生的随机数是不同的。
(2)public Random(long seed):使用指定long型的seed种子构造伪随机数生成器,当seed相同时,每次实例化Random对象所产生的随机数是相同的。
Random类支持生成int、long、double、float和boolean型的随机数,常用方法如下:
(1)public int nextInt():返回下一个伪随机数,它是取自此随机数生成器的序列中均匀分布的int值。
(2)public int nextInt(int n):返回下一个伪随机数,它是取自此随机数生成器序列的、在0(包括)和指定值n(不包括)之间均匀分布的int值。
(3)public long next Long():返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的long值。
(4)public float nextFloat():伪随机地生成并返回一个从0.0f(包括)到1.0f(不包括)范围内均匀选择(大致)的float值。
(5)public double next Double():伪随机地生成并返回一个从0.0d(包括)到1.0d(不包括)范围内均匀选择(大致)的double值。
(6)public boolean next Boolean():伪随机地生成并返回一个boolean值。值true和false的生成概率(大致)相同。
(7)public void setSeed(long seed):使用单个long种子设置此随机数生成器的种子。setSeed的常规协定是它更改此随机数生成器对象的状态,使其状态好像是刚刚使用参数seed作为种子创建它的状态一样。
【例8-5】
使用Random类演示生成指定区间范围的int型随机数和float型随机数。(www.xing528.com)
在项目chapter8的src目录下新建包cn.linaw.chapter8.demo02,在包里创建测试类Random Test1,源代码如图8-5所示。
图8-5 利用Random类生成指定区间的随机数
注意:
如果使用Random类生成[a,b)区间的随机数,可以将[a,b)区间分解为[0,b-a)+a,先利用Random类的方法生成[0,b-a)区间的随机数,再加上a即可。
Random类中实现的随机算法是伪随机的,是有规则的随机,随机算法需要指定种子(seed),使用无参构造方法Random()生成Random对象使用的是当前系统时间对应的数字作为种子。如果用相同的种子创建两个Random对象,则对每个对象进行相同的方法调用序列,它们将生成并返回相同的数字序列。
【例8-6】
使用Random类有参构造方法产生随机数。
测试类Random Test2如图8-6所示。
图8-6 使用指定种子构造Random对象示例
多次运行该测试程序可以看出,使用指定的种子构造的Random对象,每次运行时的结果都相同。
利用相同种子构造的Random对象可以生成相同的随机数序列这个特性,有时在软件测试中很有帮助,例如,在使用不同随机数序列前先使用固定的随机数序列进行验证。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。