java.util包——随机类(Random)
作者:zccst
java.util包中的内容重点讲解部分:
1. 随机类(Random)
2. StringTokenizer类
3. 集合和映射(BitSet, Vector, Stack, Hashable)
随机类(Random)——java产生随机数的几种方式之一
java.lang.Math中的方法Random()与java.util.Random的比较:
1,public static doublerandom()返回值范围是[0.0, 1.0),且近似均匀分布。第一次调用时,将创建一个新的伪随机数生成器。
new java.util.Random也创建一个新的伪随机数生成器。且此方法是完全同步的,可允许多个线程使用而不出现错误。
2,java.util.Random可以产生int、long、float、double以及Goussian等类型的随机数。这是它与java.lang.Math中的方法Random()最大的不同之处,后者只产生double型的随机数。
此外,System类中有一个currentTimeMillis()方法,这个方法返回一个从1970年1月1号0点0分0秒到目前的一个毫秒数,返回类型是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();
}
}