2012-03-21 3 views

답변

2
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에서 쉽게 파생됩니다.

+0

간단하지만 효과적 ... 고맙습니다. – Navdroid

+0

문제가 없습니다. 이것은 다음을 수정 함을 기억하십시오. – Hounshell

3

Fisher-Yates shuffle. 특히 처음 15 개의 요소를 섞어서 선택하십시오.

+0

특히 처음 15 개 요소를 섞어서 선택하십시오. - 죄송 합니다만,이 부분을 실제로 얻지는 못했습니다. 제발 좀 더 자세히 설명해 주실 수 있습니까? – bezmax

+0

+1 셔플은 차례대로 각 셀에 대해 임의의 요소를 선택합니다. 15 칸 만 필요하기 때문에 15 칸을 끝내면 멈출 수 있습니다. –

+0

하지만 속임수가 없어야합니다. – aioobe