Java Random和ThreadLocalRandom

原创 Laughing  2017-11-05 22:31  阅读 62 次 评论 0 条

Random

  1. Random random = new Random();  
  2. System.out.println(random.nextBoolean());//随机true、false  
  3. byte[] buffer = new byte[16];  
  4. random.nextBytes(buffer);  
  5. System.out.println(Arrays.toString(buffer));  
  6. System.out.println(random.nextDouble());//生成0.0~1.0之间的伪随机double数  
  7. System.out.println(random.nextFloat());//生成0.0~1.0之间的伪随机float数  
  8. System.out.println(random.nextGaussian());//生成平均值是0.0,标准差是1.0的伪高斯数  
  9. System.out.println(random.nextInt());//生成int类型的伪随机数  
  10. System.out.println(random.nextInt(10));//生成0~10之间的伪随机数  
  11. System.out.println(random.nextLong());//生成long证书取值范围的伪随机数  

温馨提示

如果使用相同的种子相同的顺序调用Random,则他们会产生相同的数字序列。

  1. Random random = new Random(50);  
  2.         System.out.println("第一个种子");  
  3.         System.out.println(random.nextBoolean());//随机true、false  
  4.         byte[] buffer = new byte[16];  
  5.         random.nextBytes(buffer);  
  6.         System.out.println(Arrays.toString(buffer));  
  7.         System.out.println(random.nextDouble());//生成0.0~1.0之间的伪随机double数  
  8.         System.out.println(random.nextFloat());//生成0.0~1.0之间的伪随机float数  
  9.         System.out.println(random.nextGaussian());//生成平均值是0.0,标准差是1.0的伪高斯数  
  10.         System.out.println(random.nextInt());//生成int类型的伪随机数  
  11.         System.out.println(random.nextInt(10));//生成0~10之间的伪随机数  
  12.         System.out.println(random.nextLong());//生成long证书取值范围的伪随机数  
  13.           
  14.         Random random1 = new Random(50);  
  15.         System.out.println("第二个种子");  
  16.         System.out.println(random1.nextBoolean());//随机true、false  
  17.         byte[] buffer1 = new byte[16];  
  18.         random1.nextBytes(buffer1);  
  19.         System.out.println(Arrays.toString(buffer1));  
  20.         System.out.println(random1.nextDouble());//生成0.0~1.0之间的伪随机double数  
  21.         System.out.println(random1.nextFloat());//生成0.0~1.0之间的伪随机float数  
  22.         System.out.println(random1.nextGaussian());//生成平均值是0.0,标准差是1.0的伪高斯数  
  23.         System.out.println(random1.nextInt());//生成int类型的伪随机数  
  24.         System.out.println(random1.nextInt(10));//生成0~10之间的伪随机数  
  25.         System.out.println(random1.nextLong());//生成long证书取值范围的伪随机数  


为了避免上面的问题,可以通过获取系统时间的方式解决

  1. Random random = new Random(System.currentTimeMillis());  

ThreadLocalRandom

一下代码用户获取0~20之间的伪随机整数。

  1. ThreadLocalRandom threadLocalRandom = ThreadLocalRandom.current();  
  2. System.out.println(threadLocalRandom.nextInt(020));  
本文地址:https://www.lisen.me/java-random-and-threadlocalrandom.html
版权声明:本文为原创文章,版权归 木子网 所有,欢迎分享本文,转载请保留出处!

发表评论


表情