亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

java數組隨機數不能重復如何解決

小億
92
2023-11-07 22:36:23
欄目: 編程語言

要解決Java數組隨機數不能重復的問題,可以使用以下方法:

  1. 使用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;
    }
}
  1. 另一種方法是使用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算法。可以根據具體的需求選擇使用哪種方法。

0
玛纳斯县| 司法| 金门县| 蒙城县| 瓦房店市| 米林县| 浦县| 承德县| 望城县| 仲巴县| 南京市| 余庆县| 两当县| 鹿泉市| 怀宁县| 台山市| 南丹县| 眉山市| 凤冈县| 韶山市| 沛县| 阜平县| 舟曲县| 昌江| 安龙县| 肥城市| 上饶市| 昌黎县| 大方县| 漳平市| 盐山县| 海口市| 杂多县| 黄山市| 远安县| 区。| 五寨县| 顺昌县| 乐昌市| 化州市| 黄龙县|