자바 ArrayList 는 중복 되 지 않 는 랜 덤 수 를 어떻게 생 성 합 니까?

그 전에 저 는 자바 의 배열 을 사용 하여 N-M 간 의 중복 되 지 않 는 임 의 수 를 실 현 했 습 니 다.다음은 수열 Array List 를 사용 하여 같은 기능 을 실 현 했 습 니 다.코드 는 다음 과 같 습 니 다.

/**
   *      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;
  }
이 실현 의 원 리 는 배열 을 사용 하 는 것 과 대체적으로 일치 하지만 주의해 야 할 몇 가지 점 입 니 다.저 는 여기 서 사용 하 는 반환 서열 입 니 다.매개 변 수 는 시작 값,최종 값 과 개수 만 있 습 니 다.그리고 하나의 Array List 수열 을 정 의 했 습 니 다.수열 의 add 방법 을 사용 하여 모든 발생 하 는 임 의 수 를 받 고 For 순환 을 사용 하여 중복 여 부 를 판단 합 니 다.만약 에 외부 순환 i 를 반복 하면-...그러나 여기 서 주의해 야 할 것 은:이때 Array List 에 현재 중 복 된 값 이 저장 되 어 있 기 때문에 i-만 사용 할 수 없고,이 조건 에 부합 되 지 않 는 수 를 정리 하 는 reove 방법 으로 제거 해 야 합 니 다.여 기 는 주의해 야 할 것 입 니 다.한 마디 가 쓰 여 있 지 않 으 면 작은 범위 에서 생 성 된 난수 가 순환 할 수 있 습 니 다.
다음은 성공 적 으로 실 행 된 캡 처 입 니 다.

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기