난수 배열 질문입니다...
한누리
import java.util.Random;
class RandomList {
int max;
int[] a;
public RandomList(int maxIdx, int percent) {
max = maxIdx;
a = new int[maxIdx];
for(int i=0;imaxIdx;i++)
a[i] = i;
setLevel(percent);
}
// 난수 원소의 비율을 재설정한다.
void setLevel(int percent) {
Random rand = new Random();
int[] idx = new int[max];
int tmp = 0;
int count = 0;
for(int i=rand.nextInt(max);imax;i++){
idx[i] = rand.nextInt(max);
tmp = a[i];
a[i] = a[idx[i]];
a[idx[i]] = tmp;
count++;
if(count == (percent/max) /2)
break;
}
}
// 난수 값이 들어있는 정수형 배열을 반환한다.
// 호출 될 때마다 각기 다른 정수형 배열이 반환된다.
int[] getNextList() {
return a;
}
}
class Test {
public static void main(String[] args) {
RandomList rlist = new RandomList(10, 20);
print(rlist);
System.out.println();
rlist.setLevel(40);
print(rlist);
}
static void print(RandomList rlist) {
for (int i=0; i5; i++) {
int[] lst = rlist.getNextList();
for (int j=0; jlst.length; j++)
System.out.print(lst[j] + );
System.out.println();
}
}
}위에 코드를 실행하면 10줄이 출력되는데 모두 같은 결과가 나옵니다. int[] getNextList() 메소드에서 a배열을 반환하면
루프를 돌릴 때 마다 다른결과가 나와야 하는데 전부 같은 값이 나오네요 ㅜㅜ
아무리 생각해도 답이 안나옵니다..
도와주시면 감사하겠습니다 T_T