java.util包——随机类(Random)

时间:2021-10-26 19:30:39

java.util包——随机类(Random)

作者:zccst

 

java.util包中的内容重点讲解部分:

1.       随机类(Random)

2.       StringTokenizer

3.       集合和映射(BitSet, Vector, Stack, Hashable)

 

 

随机类(Random)——java产生随机数的几种方式之一

java.lang.Math中的方法Random()java.util.Random的比较:

1public static doublerandom()返回值范围是[0.0, 1.0),且近似均匀分布。第一次调用时,将创建一个新的伪随机数生成器。

new java.util.Random也创建一个新的伪随机数生成器。且此方法是完全同步的,可允许多个线程使用而不出现错误。

 

2java.util.Random可以产生intlongfloatdouble以及Goussian等类型的随机数。这是它与java.lang.Math中的方法Random()最大的不同之处,后者只产生double型的随机数。

 

此外,System类中有一个currentTimeMillis()方法,这个方法返回一个从197011000秒到目前的一个毫秒数,返回类型是long,我们可以拿他作为一个随机数,我们可以拿他对一些数取模,就可以把他限制在一个范围之内。

 

java.util.Random随机数类

1,  随机类(Random)的构造方法(2个)

public Random()

public Random(longseed)

Java产生随机数需要有一个基值seed,在第一种方法中基值缺省,则将系统时间作为seed

 

2,  随机类(Random)常用方法(6个)

public int nextInt()                      //该方法是产生一个int型随机数。[0-n)

public long nextLong()                   //该方法是产生一个long型随机数.

public float nextFloat()                  //该方法是产生一个Float型随机数。[0.0f-1.0f)

public double nextDouble()               //该方法是产生一个Double型随机数。[0.0d-1.0d)

public void nextBytes(byte[] bytes);        //生成随机数据的字节数组,存放在byte[]

 

public synonronized void setSeed(longseed)  //该方法是设定基值seed

public synchronized double nextGoussian()  //该方法是产生一个double型的Goussian随机数。

 

例:RandomNumber.java

源码如下:

import java.util.Random;

public class RandomNumber{

         publicstatic void main(String[] args){

                   Randomrand1=new Random();

                   byte[]b= new byte[5];

                   rand1.nextBytes(b);

                   for(inti=0;i<5;i++)

                            System.out.print(b[i]+"/t");

                   System.out.println();

                   for(inti=0; i<5;i++)

                            System.out.print(rand1.nextInt(100)+"/t");

                   System.out.println();

                   for(inti=0; i<3;i++)

                            System.out.print(rand1.nextDouble()+"/t");

                   System.out.println();                         

         }

}