中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

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
夏河县| 正镶白旗| 伊金霍洛旗| 洮南市| 墨玉县| 云林县| 阜南县| 师宗县| 阳原县| 天台县| 珠海市| 芜湖市| 海盐县| 乌鲁木齐市| 忻州市| 荃湾区| 化州市| 安康市| 旬邑县| 资源县| 托克逊县| 嘉鱼县| 紫云| 上犹县| 崇州市| 长武县| 梅河口市| 揭东县| 贞丰县| 中超| 望都县| 砀山县| 大渡口区| 邢台市| 政和县| 城口县| 平江县| 县级市| 邵阳县| 公主岭市| 阿尔山市|