java数组随机数不能重复如何解决

   2025-02-15 9310
核心提示:要解决Java数组随机数不能重复的问题,可以使用以下方法:使用java.util.Random类生成随机数,并将生成的随机数存入Set集合中。

要解决Java数组随机数不能重复的问题,可以使用以下方法:

使用java.util.Random类生成随机数,并将生成的随机数存入Set集合中。由于Set集合不允许重复元素,因此可以保证生成的随机数不重复。然后,将Set集合转换为数组。
import java.util.HashSet;import java.util.Random;import java.util.Set;public class RandomArray {    public static void main(String[] args) {        int[] array = generateRandomArray(10, 1, 100);        for (int num : array) {            System.out.println(num);        }    }    public static int[] generateRandomArray(int length, int min, int max) {        if (length > (max - min + 1)) {            throw new IllegalArgumentException("生成不了指定范围内的不重复随机数!");        }                Random random = new Random();        Set<Integer> set = new HashSet<>();                while (set.size() < length) {            int randomNum = random.nextInt(max - min + 1) + min;            set.add(randomNum);        }                int[] array = new int[length];        int index = 0;        for (int num : set) {            array[index++] = num;        }                return array;    }}
另一种方法是使用Fisher-Yates算法,该算法通过交换数组元素的位置来生成不重复的随机数。
import java.util.Random;public class RandomArray {    public static void main(String[] args) {        int[] array = generateRandomArray(10, 1, 100);        for (int num : array) {            System.out.println(num);        }    }    public static int[] generateRandomArray(int length, int min, int max) {        if (length > (max - min + 1)) {            throw new IllegalArgumentException("生成不了指定范围内的不重复随机数!");        }                int[] array = new int[length];        Random random = new Random();                for (int i = 0; i < length; i++) {            int randomIndex = random.nextInt(max - min + 1 - i) + i;            array[i] = randomIndex;                        int temp = array[i];            array[i] = array[randomIndex];            array[randomIndex] = temp;        }                for (int i = 0; i < length; i++) {            array[i] = array[i] + min;        }                return array;    }}

这两种方法都是通过生成随机数并存入数组中,保证随机数不重复。第一种方法使用了Set集合,第二种方法使用了Fisher-Yates算法。可以根据具体的需求选择使用哪种方法。

 
 
更多>同类维修知识
推荐图文
推荐维修知识
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  网站留言