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