1. 程式人生 > 程式設計 >Java ArrayList如何實現生成不重複隨機數

Java ArrayList如何實現生成不重複隨機數

在此之前我使用Java的陣列實現了產生N-M之間的不重複的隨機數,下面是使用數列ArrayList實現同樣的功能,程式碼如下:

/**
   * 隨機生成 N--M,N個不重複隨機數 使用ArrayList
   *
   * @param startRange 起始數字
   * @param endRange  終止數字
   * @param count   個數
   */
  public static ArrayList<Integer> getRandom(int startRange,int endRange,int count) {
    ArrayList<Integer> arr = new ArrayList<>();
    for (int i = 0; i < count; i++) {
      arr.add(((int) (Math.random() * (endRange - startRange + 1) + startRange)));
      for (int j = 0; j < i; j++) {
        if (arr.get(i) == arr.get(j)) {
          arr.remove(i);
          i--;
          break;
        }
      }
    }
    return arr;
  }

這個實現的原理和使用陣列基本一致,但是需要注意的幾點,我這裡是使用的一個返回序列,引數只有起始值、終值和個數,然後定義了一個ArrayList數列,使用數列的add方法,接收每一個產生的隨機數,並使用For迴圈進行判斷是否重複,如果重複外迴圈 i --,但是這裡需要注意的是:此時ArrayList裡面已經存放了當前的重複的值了,所以不能只用 i --,還需要使用梳理的remove方法將此不符合條件的數移除,這裡是需要注意的,如果不寫著一句,在小的範圍內生成的隨機數很可能會出現死迴圈。

下面是成功執行的截圖:

Java ArrayList如何實現生成不重複隨機數

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。