반복이없고 범위가없는 int의 더 큰 배열에서 무작위 배열을 생성해야합니다.더 큰 배열에서 난수 배열을 생성 하시겠습니까?
예를 들어, 배열은 1-200 int로되어 있습니다. 200 개의 int에서 임의의 숫자 배열이 필요하지만 크기는 15입니다. 어떻게 구현할 수 있습니까?
반복이없고 범위가없는 int의 더 큰 배열에서 무작위 배열을 생성해야합니다.더 큰 배열에서 난수 배열을 생성 하시겠습니까?
예를 들어, 배열은 1-200 int로되어 있습니다. 200 개의 int에서 임의의 숫자 배열이 필요하지만 크기는 15입니다. 어떻게 구현할 수 있습니까?
Random rnd = new Random();
int[] a = new int[200];
for (int i = 0; i < a.length; i++)
a[i] = i;
int[] r = new int[15];
for (int i = 0; i < r.length; i++) {
int j = rnd.nextInt(a.length - i);
r[i] = a[j];
a[j] = a[a.length - i - 1];
}
그렇게해야합니다. 무작위로 뭔가를 잡아. 일단 당신이 그것을 움켜 잡았 으면, 그것을 "마지막"값으로 바꾸십시오. "마지막"값은 a.length와 i에서 쉽게 파생됩니다.
Fisher-Yates shuffle. 특히 처음 15 개의 요소를 섞어서 선택하십시오.
간단하지만 효과적 ... 고맙습니다. – Navdroid
문제가 없습니다. 이것은 다음을 수정 함을 기억하십시오. – Hounshell