
内容导航:
- 前言
- 1、Random类
- 2、Random类的构造方法
- 3、Random类的方法
- 4、示例
- 5、与Math类中的random方法比较
前言
在设计算法时,我们常常可能需要使用一些随机数。比如扫雷游戏中地雷的位置,抽奖程序中的随机奖品,彩票中奖数字。
本节学习Java语言中对随机处理的支持。
1、Random类
Random类中实现的随机算法是伪随机,也就是有规则的随机。在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字。
相同种子数的Random对象,相同次数生成的随机数字是完全相同的。也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同。这点在生成多个随机数字时需要特别注意。
2、Random类的构造方法
-
public Random()
该构造方法使用一个和当前系统时间对应的相对时间有关的数字作为种子数,然后使用这个种子数构造Random对象。 -
public Random(long seed)
该构造方法可以通过制定一个种子数进行创建。
3、Random类的方法
-
public boolean nextBoolean()
该方法的作用是生成一个随机的boolean值,生成true和false的值几率相等,也就是都是50%的几率。 -
public double nextDouble()
该方法的作用是生成一个随机的double值,数值介于[0,1.0)之间。 -
public int nextInt()
该方法的作用是生成一个随机的int值,该值介于int的区间,也就是-231到231-1之间。如果需要生成指定区间的int值,则需要进行一定的数学变换,具体可以参看下面的使用示例中的代码。
-
public int nextInt(int n)
该方法的作用是生成一个随机的int值,该值介于[0,n)的区间,也就是0到n之间的随机int值,包含0而不包含n。如果想生成指定区间的int值,也需要进行一定的数学变换,具体可以参看下面的使用示例中的代码。 -
public void setSeed(long seed)
该方法的作用是重新设置Random对象中的种子数。设置完种子数以后的Random对象和相同种子数使用new关键字创建出的Random对象相同。
4、示例
相同种子数的Random对象,相同次数生成的随机数字是完全相同的,下面是测试的代码:
示例代码:
运行结果:
在该代码中,对象r1和r2使用的种子数都是10,则这两个对象相同次数生成的随机数是完全相同的。
5、与Math类中的random方法比较
在Math类中也有一个random方法,该random方法的工作是生成一个[0,1.0)区间的随机小数。
Math类中的random方法就是直接调用Random类中的nextDouble方法实现的。
random方法的调用比较简单,所以很多程序员都习惯使用Math类的random方法来生成随机数字。
持续更新,欢迎留言提议!
码字很累,多点赞多赞赏!

网友评论