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 double random() 返回值范围是 [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{
public static void main(String[] args){
Random rand1=new Random();
byte[] b= new byte[5];
rand1.nextBytes(b);
for(int i=0;i<5;i++)
System.out.print(b[i]+"/t");
System.out.println();
for(int i=0; i<5;i++)
System.out.print(rand1.nextInt(100)+"/t");
System.out.println();
for(int i=0; i<3;i++)
System.out.print(rand1.nextDouble()+"/t");
System.out.println();
}
}