`

Random类

阅读更多
Random类是用于生成随机数的。但是该类的随机算法实际上是伪随机。即相同种子、相同次数生成的随机数是一样的。
首先看Random的两个构造方法
public Random()//默认使用当前时间对应的种子
public Random(long seed)//自定义种子
注意种子只是让里面定义的随机算法从种子开始计算。即随机算法的起源数字,和生成的区间没有任何关系。
再看Random类中的常用几个方法
public boolean nextBoolean()//true和false的生成概率各为50%
public double nextDouble()//生成0到1.0之间的随机数
public int nextInt()//生产-2的31次幂到2的31次幂-1的随机数
public int nextInt(int n)//生成0到n之间的随机数
public void setSeed(long seed)//设置Random类的种类

使用实例
1.生成[0-1.0]之间的随机数
答:random.nextDouble() //nextDouble默认生成0到1.0之间的随机数
2.生成[0-7.0]之间的随机数
答:random.nextDouble()*7 //即[0-1.0]乘以7即可
3.生成[1.0-7.0]之间的随机数
答:random.nextDouble()*6+1.0 //先生成0到7.0-1.0之间的随机数,然后+1.0
总结:生成[0,d)区间的随机小数,d为任意正的小数,则只需要将nextDouble方法的返回值乘以d即可
      生成任意非从0开始的小数区间[d1,d2)范围的随机数字(其中d1不等于0),则只需要首先生成[0,d2-d1)区间的随机数字,然后将生成的随机数字区间加上d1即可
4.生成任意的整数
答:random.nextInt() //生成的范围是-2的31次幂到2的31次幂-1之间的数
5.生成[0-25]之间的整数
答:random.nextInt(25)//生成指定int类型,通过指定范围值即可,但是是从0开始的
答:Math.abs(random.nextInt()%25)//这是另外一种写法,即先生成-25到25之间的整数,然后再取绝对值即可。
6.生成[2-25]之间的整数
答:random.nextInt(23)+2 //先生成0-23(d2-d1)之间的整数,然后再+d1
答:Math.abs(random.nextInt()%23+2) //另外一种写法

注意random.nextInt(100)会生成0-100之间的随机数,但是不包括100,因此0到99每个数字被生成出来的概率都是1.
注意2 Math.random()类,该类实际上是调用Random类的nextDouble()方法生成随机数的,因此返回数字的范围是0-1.0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics