구현 방법:
먼저 길이가 n인 배열을 정의한 다음 while 루프를 사용하여 난수를 생성하여 배열에 값을 할당하기 전에 값을 순회해야 합니다. 값이 동일하면 값을 할당하지 않고 난수를 다시 생성하고 정의된 모든 배열에 값이 할당될 때까지 반복합니다.
예제는 다음과 같습니다.
/** * 功能:产生min-max中的n个不重复的随机数 * * min:产生随机数的其实位置 * mab:产生随机数的最大位置 * n: 所要产生多少个随机数 * */ public static int[] randomNumber(int min,int max,int n){ //判断是否已经达到索要输出随机数的个数 if(n>(max-min+1) || max <min){ return null; } int[] result = new int[n]; //用于存放结果的数组 int count = 0; while(count <n){ int num = (int)(Math.random()*(max-min))+min; boolean flag = true; for(int j=0;j<count;j++){ if(num == result[j]){ flag = false; break; } } if(flag){ result[count] = num; count++; } } return result; }
Java 학습 영상 추천: Java 개발 입문
Set의 특성을 이용하여 요소는 반복될 수 없습니다.
/** * 功能:随机指定范围内N个不重复的数 * * @param min 指定范围最小值 * @param max 指定范围最大值 * @param n 随机数个数 */ public static int[] randomSet(int min, int max, int n) { Set<Integer> set = new HashSet<Integer>(); int[] array = new int[n]; for (; true;) { // 调用Math.random()方法 int num = (int) (Math.random() * (max - min)) + min; // 将不同的数存入HashSet中 set.add(num); // 如果存入的数小于指定生成的个数,则调用递归再生成剩余个数的随机数,如此循环,直到达到指定大小 if (set.size() >= n) { break; } } int i = 0; for (int a : set) { array[i] = a; i++; } return array; }
먼저 생성된 난수를 Set에 넣은 후 결정합니다. 세트의 크기 필요한 길이를 초과하지 않은 경우 루프를 계속합니다. 초과된 경우 루프에서 벗어나 세트를 배열로 변환합니다.
자바 관련 기사 추천 더보기: 자바 언어 소개
위 내용은 Java에서 지정된 간격 내에 n개의 다른 난수를 생성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!