本帖最后由 王艳峰 于 2019-3-10 14:08 编辑
java中要使生成的随机数不重复可以将已经生成的随机数放入到数组中,每次生成随机数时与数组的内容比较是否相等,相等则重新生成,不相等则存入数组。
关于生成不重复的随机数,有两种方法:
方法一: (此方法是用于对数组中的元素是否相等进行判断)
public class RandomPrint {
public static void main(String[] args) {
int[] arr = {2, 588, 888, 1000, 10000};
int[] brr = new int[5];
int index = 0; //定义变量,表示数组brr的索引
Random r = new Random();
while (index < arr.length) {
int i = r.nextInt(arr.length);
boolean b = RPrint(brr, arr); //调用方法用以判断这个数是否被获取过
if (b == false) { //判断方法返回的值为false,表示当前的数没有被获取过
brr[index] = arr; //表示吧数组arr中的元素存入数组brr中
index++;
System.out.println(arr + "元的奖金被抽出");
}
}
}
//定义一个方法,用以判断brr数组中是否存在num这个数
public static boolean RPrint(int[] brr, int num) {
for (int i = 0; i < brr.length; i++) { //对数组进行遍历
if (brr == num) {
return true;
}
}
return false; //如果最终没有找到数组brr中有与num相同的,则返回false
}
}
方法二: (此方法是对数组的索引是否重复出现进行判断),不过我用的方法比上述第一种方法要笨一点,只适用于少数数据的随机不重复生成。
public class MethodZuoye {
public static void main(String[] args) {
int[] arr = {2, 588, 88, 1000, 10000};
Print1(arr);
}
public static void Print1(int[] arr) {
Random s = new Random();
int[] temp = new int[arr.length];
for (int j = 0; j < arr.length; j++) {
temp[j] = s.nextInt(5);//存储arr[]数组的索引
if (j == 0) {
System.out.println(arr[temp[j]] + "元的奖金被抽出");
} else if (j == 1 && temp[j] != temp[j - 1]) {
System.out.println(arr[temp[j]] + "元的奖金被抽出");
} else if (j == 2 && temp[j] != temp[j - 1] && temp[j] != temp[j - 2]) {
System.out.println(arr[temp[j]] + "元的奖金被抽出");
} else if (j == 3 && temp[j] != temp[j - 1] && temp[j] != temp[j - 2] && temp[j] != temp[j - 3]) {
System.out.println(arr[temp[j]] + "元的奖金被抽出");
} else if (j == 4 && temp[j] != temp[j - 1] && temp[j] != temp[j - 2] && temp[j] != temp[j - 3] && temp[j] != temp[j - 4]) {
System.out.println(arr[temp[j]] + "元的奖金被抽出");
} else
j=j-1;
}
}
}
以上就是我对java中随机生成一组不重复的数据的看法,发到贴上与大家共享,希望对大家有所帮助。
|
|