1.Random:产生一个伪随机数(通过相同的种子,产生的随机数是相同的);
1
2
3
4
|
Random r=
new
Random();
System.out.println(r.nextBoolean());
System.out.print(r.nextInt(
50
));
//随机生成0~50的随机数,不包括50
System.out.println(r.nextInt(
20
)+
30
);
//随机生成30~50的随机数,不包括50
|
2.ThreadLocalRandom:是JDK 7之后提供并发产生随机数,能够解决多个线程发生的竞争争夺。ThreadLocalRandom不是直接用new实例化,而是第一次使用其静态方法current()。
从Math.random()改变到ThreadLocalRandom有如下好处:
我们不再有从多个线程访问同一个随机数生成器实例的争夺。
取代以前每个随机变量实例化一个随机数生成器实例,我们可以每个线程实例化一个。
1
2
3
|
ThreadLocalRandom t=ThreadLocalRandom.current();
System.out.println(t.nextInt(
50
));
//随机生成0~50的随机数,不包括50
System.out.println(t.nextInt(
30
,
50
));
//随机生成30~50的随机数,不包括50
|
3.UUID: UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部份。UUID 的目的,是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。如此一来,每个人都可以建立不与其它人冲突的 UUID。在这样的情况下,就不需考虑数据库建立时的名称重复问题。目前最广泛应用的 UUID,即是微软的 Microsoft's Globally Unique Identifiers (GUIDs),而其他重要的应用,则有 Linux ext2/ext3 档案系统、LUKS 加密分割区、GNOME、KDE、Mac OS X 等等。
1
2
|
String u=UUID.randomUUID().toString();
System.out.println(u);
|
生成5个字符的验证码:
1
2
3
4
5
6
7
8
9
10
|
String content=
"ABCDEFGHIJKLMNOPQRSTUVWHYZ"
;
//创建23个大写字母的字符串
content+=content.toLowerCase();
//把大写字母转换成小写字母,相连接
content+=
"0123456789"
;
//连接0~9的数字。
Random r=
new
Random();
//创建一个随机数对象
StringBuilder b=
new
StringBuilder(
5
);
//创建空间大小为5的StringBuilder对象
for
(
int
i =
0
; i <
5
; i++) {
char
n=content.charAt(r.nextInt(content.length()));
//截取一个从0到content.length()之间的字符,循环输出5个不同的字符,追加到一起
b.append(n);
}
System.out.println(b.toString());
//转成字符串输出5个字符
|