Random方法概览
大体上可以分为三类:
- 返回值类型为:DoubleStream | IntStream | LongStream
- 返回值类型为:int | long | float | boolean | double
- 返回值类型为: void
返回值类型为xxxStream
这类返回值类型的方法功能作用是返回一个随机数组成的流。
以doubles()方法举例:
//doubles(long StreamSize),参数表示流的长度
//本例中方法返回三个浮点型随机数
import java.util.Arrays;
import java.util.Random;
public class Demo1 {
public static void main(String[] args) {
Random random = new Random();
System.out.println(Arrays.toString(random.doubles(3).toArray()));
}
}
// doubles(long xxx, double xxx, double xxx),第一个参数表示流的长度,第二个表示起始边界,第三个表示终止边界
//本例中方法返回三个在3到5之间的浮点型随机数
import java.util.Arrays;
import java.util.Random;
public class Demo1 {
public static void main(String[] args) {
Random random = new Random();
System.out.println(Arrays.toString(random.doubles(3,3,5).toArray()));
}
}
返回值类型为基本数据类型
这类方法返回的是一个随机数。
以nextnt()举例:
//本例方法返回一个随机整数
import java.util.Random;
public class Demo1 {
public static void main(String[] args) {
Random random = new Random();
System.out.println(random.nextInt());
}
}
nextInt方法不同于其他next…方法的地方,他有一个有参覆写
//nextInt(int bound)方法返回一个从0到bound的随机整数
//注意nextInt方法无参时返回的值从负的2的31次方到正的2的31次方-1
import java.util.Random;
public class Demo1 {
public static void main(String[] args) {
Random random = new Random();
System.out.println(random.nextInt(62));
}
}
nextFloat()和nextDouble()的返回值范围都是0到1,想要0~5的取值范围可以乘5
返回值类型为void
nextBytes(byte[] arr)方法,随机生成若干个随机数存入数组arr中,随机数的个数有数组长度决定。
import java.util.Arrays;
import java.util.Random;
public class Demo1 {
public static void main(String[] args) {
Random random = new Random();
byte[] arr = new byte[5];
random.nextBytes(arr);
System.out.println(Arrays.toString(arr));
}
}
setSeed( long bound)方法设置种子数,种子数的作用,在同一种子数的形况下,随机数每次都相同,可以直接在new的时候设置种子数。
import java.util.Arrays;
import java.util.Random;
public class Demo1 {
public static void main(String[] args) {
Random random = new Random();
random.setSeed(3);
System.out.println(random.nextInt());
}
}
实验题
设置一个数组,将大小字母和0~9全放进去。设置一个6位的密码生成器,每位密码从数组随机取得。
import java.util.Random;
import java.util.Scanner;
public class RandomTest {
public static void main(String[] args) {
// 定义一个字符型数组
char[] pardStore = new char[62];
// 把所有的大写字母放进去 把所有的小写字母放进去 把0到9放进去
for(int i=0;i<26;i++) {
pardStore[i] = (char)(i+65);
}
for(int i=26;i<52;i++) {
pardStore[i] = (char)(i+71);
}
for(int i=0;i<10;i++) {
pardStore[i+52] = (char)(i+48);
}
Random q = new Random();
for(int i=0;i<6;i++){
int n = q.nextInt(62);
System.out.print(pardStore[n]);
}
}
}