java-随机数去重
随机函数是在java的入门学习中会经常使用得一种函数,在随机生成的应用场景中,比如:随机生成密码、随机生成验证码、随机生成一个数字等等。
随机函数的介绍
随机函数有两种方式:
-
Random
Random是一个类,使用该随机函数要先声明一个Random对象,在声明Random对象后,在Random中封装了很多的方法,调用Random方法生成相应基本数据类型的的随机数据方法是:nextXxx()方法来生成指定数据类型的范围的数据。例如
class RandomTest{
public static void main(String[] args){
Random rd=new Random();
int t=rd.nextInt(6);
int x=rd.nextInt(6)+1;
}
}
-
Math.random:默认范围为[0.0,1.0)
在Math工具类中的随机函数返回值类型是double,如果要返回int或者是其他数据类型,则需要进行类型的强制转换
class RandomTest{
public static void main(String[] args){
int t=(int)((Math.random()*6);
int t=(int)((Math.random()*6+1);
}
}
随机数去重的方法
在生成随机数的过程中我们会发现在生成多个数据时会出现相同的数据,如果有一个需求是要在一个数组中生成不重复随机的数据。这就是随机数的去重问题。
如果在有以下需求,在一个长度为10的int数组中,要求在[1,20]范围内在数组中生成不重复的值。实现代码如下所示
import java.util.Arrays;
import java.util.Random;
public class RandomDemo {
public static void main(String[] args) {
Random random=new Random();
int[] arr=new int[10];
for(int i=0;i<arr.length;i++){
arr[i]=random.nextInt(20)+1;
for(int j=0;j<i;j++){
if(arr[i]==arr[j]){
i--;
break;
}
}
}
System.out.println(Arrays.toString(arr));
}
}
利用Set集合实现随机数去重的方法
学习过集合的小伙伴都知道Set接口的特性:set集合是无序的不可重复的
此方法只是简单的使用了双层for循环,也只是随机函数去重的一种基础的方法,还有其他的方法,此方法更适用于初学者。