(Java) 배열 섞기

DevSeoRex·2022년 5월 29일
0

Java

목록 보기
4/15

int형 배열을 선언하고 임의로 뽑은 배열의 두가지 요소를 뒤섞어서 배열의 순서를 바꾸는 예제를 작성해 보았다.

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:

이렇게 배열이 순서가 뒤섞인 걸 볼 수 있다.

0개의 댓글