三、Java基础工具(1)_常用类——随机数

2018-05-14

 

随机数

 

随机数:随机的生成的任意一个数(理论上)

 

一、Random类(通过相同的种子,产生的随机数是相同的)

  Random类用于生成一个伪随机数,它的构造器可以是无参数(以系统时间为种子)的也可以显式的传入一个种子。

  它可以输出各种类型的随机数;如果两个random的初始种子是一样的,那么他们产生的相同类型的随机数是一样的(无参看成参数相同)。

  public Random():使用默认的种子(以当前系统时间作为种子)

  public Random(long seed):根据指定的种子

---------------------------------------------------------------- 

 

二、TheadLocalRandom类

  是JDK 7之后提供并发产生随机数,能够解决多个线程发生的竞争争夺。是Random的子类。ThreadLocalRandom不是直接用new实例化,而是使用其方法TheadLocalRandom.current(),用于返回当前类对象。
  从Math.random()改变到ThreadLocalRandom有如下好处:
  我们不再有从多个线程访问同一个随机数生成器实例的争夺。
  取代以前每个随机变量实例化一个随机数生成器实例,我们可以每个线程实例化一个。

1 ThreadLocalRandom t=ThreadLocalRandom.current();
2 System.out.println(t.nextInt(50));//随机生成0~50的随机数,不包括50
3 System.out.println(t.nextInt(30, 50));//随机生成30~50的随机数,不包括50

----------------------------------------------------------------------------------------------------------------

 

三、UUID类

  UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,在一台机器上生成的数字,它保证对在同一时空中所有机器都是唯一的。

  UUID是一个128位长的数字,一般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、一个随机数来生成UUID。

  我们一般用来表示:随机的唯一的字符串。

1 String u=UUID.randomUUID().toString();//生成UUID,并将其转换成字符串
2 System.out.println(u);

  输出结果:

四、生成一个五位数的验证码

 1 String content="ABCDEFGHIJKLMNOPQRSTUVWHYZ";//创建23个大写字母的字符串
 2 content+=content.toLowerCase();//把大写字母转换成小写字母,相连接
 3 content+="0123456789";//连接0~9的数字。
 4 Random r=new Random();//创建一个随机数对象
 5 StringBuilder b=new StringBuilder(5);//创建空间大小为5的StringBuilder对象
 6 for (int i = 0; i <5; i++) {
 7     char n=content.charAt(r.nextInt(content.length()));//截取一个从0到content.length()之间的字符,循环输出5个不同的字符,追加到一起
 8     b.append(n);
 9 }
10 System.out.println(b.toString());//转成字符串输出5个字符

CharAt()方法返回位于字符串的指定索引处的字符。该字符串的索引从零开始。

nextInt()方法的作用是生成一个随机的int值,该值介于[0,n)的区间,也就是0到n之间的随机int值,包含0而不包含n。

StringBuffer里面的方法吧,字符缓冲对象追加信息
比如说:StringBuffer sb=new StringBuffer();现在sb里面什么也没有
sb.append("abc");可以将字符串abc追加进sb里面.你打印sb会打印出abc
当然你还可以拉着追加

参考:https://www.cnblogs.com/jiangxifanzhouyudu/p/6659670.html?utm_source=itdadao&utm_medium=referral

原文地址:https://www.cnblogs.com/sunNoI/p/9036677.html