大家好,又见面了,我是你们的朋友全栈君。
Java 随机数详解
## 概述
Java随机数的产生方法有2种,一种是Math.random()方法,一种是Random类。
Math.random()可以随机生成一个0-1的double类型浮点数。
Random类需要一个随机数种子来产生一个随机数,默认构造函数Random()使用当前时间(System.currentTimeMillis())作为发生器的种子,也可以使用Random(long seed)指定发生器的种子。
随机数发生器(Random)对象产生以后,可以通过调用不同的方法(nextInt()、nextLong()、nextFloat()、nextDouble()等)获得不同类型随机数。指定随机数种子后,每次运行生成的随机数序列结果都一样。
## 生成随机数
### 使用Random类生成随机数
“`java
Random random = new Random();
System.out.println(random.nextInt());// 生成整形随机数
System.out.println(random.nextFloat());// 生成浮点型随机数
System.out.println(random.nextBoolean());// 生成布尔类型随机数
“`
### 使用Math.random()方法生成随机数
“`java
double random = Math.random();
System.out.println(random);
“`
## 生成指定范围的随机数
生成“5 =< result < 30”的随机数。
### 使用Random类
“`
int min = 5;
int max = 30;
Random random = new Random();
// 5 =< result < 30
int result = random.nextInt(max – min) + min;
System.out.println(result);
“`
### 使用Math.random()方法
“`
int min = 5;
int max = 30;
int result = (int) (Math.random() * (max – min)) + min;
System.out.println(result);
“`
## 生成随机密码
生成包含大小写字母、数字、特殊字符的指定长度密码
### 使用ASCII码
“`
int length = 15;
Random random = new Random();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < length; i++) {
sb.append((char) (random.nextInt(127 – 33) + 33));
}
System.out.println(sb.toString());// &%TK^5%{@VE4
“`
### 使用指定的字符串
“`
String chars = “0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”;
int length = 15;
Random random = new Random();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < length; i++) {
sb.append(chars.charAt(random.nextInt(chars.length())));
}
System.out.println(sb.toString());// 6FUCPy9hCJRbBSg
“`
## Random类常用API
| 方法 | 描述 |
| — | — |
| Random() | 创建一个新的随机数生成器。 |
| Random(long seed) | 使用seed种子创建一个新随机数生成器。 |
| protected int next(int bits) | 生成下一个伪随机数。 |
| boolean nextBoolean() | 返回下一个伪随机数,它是从此随机数生成器的序列中取出的、均匀分布的 boolean 值。 |
| void nextBytes(byte\[\] bytes) | 生成随机字节并将其置于用户提供的字节数组中。 |
| double nextDouble() | 返回下一个伪随机数,它是从此随机数生成器的序列中取出的、在 0.0 和 1.0之间均匀分布的 double 值。 |
| float nextFloat() | 返回下一个伪随机数,它是从此随机数生成器的序列中取出的、在 0.0 和 1.0 之间均匀分布的 float 值。 |
| double nextGaussian() | 返回下一个伪随机数,它是从此随机数生成器的序列中取出的、呈高斯(“正常地”)分布的 double 值,其平均值是 0.0,标准偏差是 1.0。 |
| int nextInt() | 返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。 |
| int nextInt(int n) | 返回一个伪随机数,它是从此随机数生成器的序列中取出的、在 0(包括)和指定值(不包括)之间均匀分布的 int值。 |
| long nextLong() | 返回下一个伪随机数,它是从此随机数生成器的序列中取出的、均匀分布的 long 值。 |
| void setSeed(long seed) | 使用seed设置此随机数生成器的种子。 |
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/158832.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...