10개의 요소로 이루어져 있는 배열 intArr을 선언하고,
일단 배열을 섞기위해 배열의 값을 잠시 저장할 변수
int tmp를 선언하였다.
int[] intArr = new int[10]; int tmp = 0;
그 다음 배열에 1~10 까지의 숫자를 반복문으로 넣어 주었다. i가 0부터 시작하기때문에 (i+1)을 줘서
1~10 까지의 숫자가 들어가게 하였다.
값이 잘 들어갔는지 출력도 해보았다.
for(int i=0; i<intArr.length; i++) { intArr[i] += (i+1); } for(int i=0; i<intArr.length; i++) { System.out.print(intArr[i]+", "); }
for문을 이용해서 반복을 시키는데, 아까와는 다르게
int j라는 변수를 선언했다. j는 Math.random() 메소드를 통하여 임의의 값을 생성하게 하였다.
for(int i=0; i<intArr.length; i++) { int j = (int)(Math.random()*9); tmp = intArr[i]; intArr[i] = intArr[j]; intArr[j] = tmp; }
Math.random() 메소드로 1~10까지의 값을 얻으려면,
(int)(Math.random()*10)+1 해주어야 한다.
그렇다면 1~10까지의 숫자가 배열에 들어있지만, 배열의 index는 0~9까지 이므로 0~9까지의 난수를 발생시켜 임의의 값을 가지게 하였다.
tmp에 intArr[i] 값을 임시로 저장하고,
intArr[i] 에 intArr[j] 저장하고 ,
intArr[i] 의 값을 가지고 있던 tmp를 intArr[j]에
대입시켜서, 결과적으로 intArr[i]과 intArr[j]의 값을 배열의 길이만큼 반복해서 섞어서 배열을 섞는 것이다.
전체 코드는 이렇게 작성하였다.
public class Test6 { public static void main(String[] args) { int[] intArr = new int[10]; int tmp = 0; for(int i=0; i<intArr.length; i++) { intArr[i] += (i+1); } for(int i=0; i<intArr.length; i++) { System.out.print(intArr[i]+", "); } System.out.println(); for(int i=0; i<intArr.length; i++) { int j = (int)(Math.random()*9); tmp = intArr[i]; intArr[i] = intArr[j]; intArr[j] = tmp; } for(int i=0; i<intArr.length; i++) { System.out.print(intArr[i]+", "); } } }
출력 결과는 다음과 같다(난수를 발생시키므로 출력 결과는 매번 다를 수 있다.)
output:
이렇게 배열이 순서가 뒤섞인 걸 볼 수 있다.