Java随机数详解 - 用法、实例、API

概要:

Java随机数的产生方法有2种,一种是Math.random()方法,一种是Random类。

Math.random()可以随机生成一个0-1的double类型浮点数。

Random类需要一个随机数种子来产生一个随机数,默认构造函数Random()使用当前时间(System.currentTimeMillis())作为发生器的种子,也可以使用Random(long seed)指定发生器的种子。

随机数发生器(Random)对象产生以后,可以通过调用不同的方法(nextInt()、nextLong()、nextFloat()、nextDouble()等)获得不同类型随机数。

指定随机数种子后,每次运行生成的随机数序列结果都一样。

| |目录

生成随机数

使用Random类生成随机数

Random random = new Random();
System.out.println(random.nextInt());// 生成整形随机数
System.out.println(random.nextFloat());// 生成浮点型随机数
System.out.println(random.nextBoolean());// 生成布尔类型随机数

使用Math.random()方法生成随机数

double random = Math.random();
System.out.println(random);

实例

生成指定范围的随机数

内容:

生成“5 =< result < 30”的随机数。

方法1:使用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);

方法2:使用Math.random()方法

int min = 5;
int max = 30;
int result = (int) (Math.random() * (max - min)) + min;
System.out.println(result);

生成随机密码

内容:

生成包含大小写字母、数字、特殊字符的指定长度密码

方法1:使用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<g6

方法2:使用指定的字符串

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设置此随机数生成器的种子。
评论关闭
评论 还能输入200
评论关闭
评论 还能输入200
资料加载中...
已关注 , 取消