久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

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

142次閱讀
沒有評論

共計 1428 個字符,預計需要花費 4 分鐘才能閱讀完成。

要解決 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 算法。可以根據具體的需求選擇使用哪種方法。

丸趣 TV 網 – 提供最優質的資源集合!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-13發表,共計1428字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 贺兰县| 香港| 灵石县| 固安县| 平湖市| 洱源县| 东兴市| 武功县| 新营市| 巫溪县| 安阳市| 磐安县| 营山县| 历史| 郧西县| 宾川县| 太原市| 嘉黎县| 凤城市| 普定县| 丰台区| 西华县| 灵山县| 革吉县| 格尔木市| 大庆市| 西丰县| 台安县| 德惠市| 响水县| 宿州市| 兖州市| 阳朔县| 晋江市| 新余市| 新竹县| 离岛区| 勐海县| 开封市| 隆林| 乐山市|