Random类
一:定义:专门用来生成伪随机数,有两个构造器,一个构造器使用默认的种子(以当前时间作为种子),一个需要程序员显式传入一个long型整数的种子
二.使用方法
1 import java.util.Arrays; 2 import java.util.Random; 3 /** 4 * 一.Arrays类:此类包含用来操作数组(比如排序和搜索)的各种方法 5 * 二. public static String toString(byte[] a)返回指定数组内容的字符串表示形式。 6 * 字符串表示形式由数组的元素列表组成,括在方括号("[]")中。 7 * 相邻元素用字符 ", "(逗号加空格)分隔。这些元素通过 String.valueOf(byte) 转换为字符串。 8 * 如果 a 为 null,则返回 "null"。 9 * @author 罗摩衔那 10 * 11 */ 12 public class RandomTest 13 { 14 public static void main(String[] args) 15 { 16 //获取Random对象 17 Random r=new Random(); 18 //获取Boolean型随机数 19 System.out.println("r.nextBoolean():"+r.nextBoolean()); 20 //创建一个byte型数组 21 byte []summer=new byte[16]; 22 r.nextBytes(summer);//随机生成16个byte型数值 23 System.out.println(Arrays.toString(summer));//返回指定数组内容的字符串表示形式。 24 //生成0.0~1.0之间的伪随机数double数 25 System.out.println("r.nextDouble():"+r.nextDouble()); 26 //生成0.0~1.0之间的伪随机数float数 27 System.out.println("r.nextFloat():"+r.nextFloat()); 28 //生成平均值是0.0,标准差是1.0的伪高斯数 29 System.out.println("r.nextGaussian():"+r.nextGaussian()); 30 //生成一个处于int整数取值范围的伪随机数 31 System.out.println("r.nextInt():"+r.nextInt()); 32 //生成0~100之间的伪随机数 33 System.out.println("r.nextInt(100):"+r.nextInt(100)); 34 //生成一个处于龙long整数取值范围的伪随机数 35 System.out.println("r.nextLong():"+r.nextLong()); 36 } 37 }
补充:一.ThreadLocalRandom是Random的增强版,出现在java7中
在并发环境下,使用前者可以减少多线程资源竞争,保证体统具有更好的线程安全性
二.为避免两个Random对象产生相同的数字序列通常使用当前时间作为Random对象的种子
Random rand=new Random(System.currentTimeMillis());
三.ThreadLocalRandom使用方法
ThreadLocalRandom rand=ThreadLocalRandom().current(); //生成一个1~20之间的伪随机数 int a=rand.nextInt(1,20); //生成一个2.0~10.0之间的伪随机浮点数 int a=rand.nextDouble(2.0,10.0);