어제 오늘 내일

[Java 기초] Collections.shuffle()로 리스트 무작위 섞기 본문

IT/Java

[Java 기초] Collections.shuffle()로 리스트 무작위 섞기

hi.anna 2025. 9. 2. 12:34

정렬된 리스트를 랜덤하게 섞고 싶을 때, 직접 알고리즘을 구현할 필요는 없습니다.
Java에서는 Collections.shuffle() 메서드가 리스트의 순서를 손쉽게 랜덤화해 줍니다.
이 메서드는 리스트(List)의 요소를 무작위(Random)로 섞을 때 사용합니다.

 

1. 기본 사용법

import java.util.*;

public class ShuffleExample1 {
    public static void main(String[] args) {
        List<Integer> numbers = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));

        Collections.shuffle(numbers);

        System.out.println(numbers);
    }
}

실행 결과 (실행할 때마다 달라짐)

[3, 5, 1, 4, 2]

👉 shuffle()은 실행할 때마다 다른 순서로 리스트를 섞습니다.

 

2. 문자열 리스트 섞기

문자열 리스트도 동일하게 사용할 수 있습니다.

import java.util.*;

public class ShuffleExample2 {
    public static void main(String[] args) {
        List<String> names = new ArrayList<>(Arrays.asList("Alice", "Bob", "Charlie", "David"));

        Collections.shuffle(names);

        System.out.println(names);
    }
}

실행 결과 (예시)

[Charlie, Bob, David, Alice]

 

3. Random 객체와 함께 사용하기

Collections.shuffle()은 기본적으로 내부에서 Random 객체를 사용합니다.
하지만 우리가 직접 Random 객체를 전달하면 시드(Seed)를 고정해서 항상 동일한 결과를 얻을 수 있습니다.

import java.util.*;

public class ShuffleExample3 {
    public static void main(String[] args) {
        List<Integer> numbers = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));

        Random random = new Random(42); // 고정된 시드
        Collections.shuffle(numbers, random);

        System.out.println(numbers);
    }
}

실행 결과 (항상 동일)

[4, 2, 3, 5, 1]

👉 같은 시드를 쓰면 프로그램 실행할 때마다 같은 순서로 섞입니다.

 

4. 활용 예시

  • 카드 게임에서 카드 섞기
  • 랜덤 추첨 프로그램 만들기
  • 리스트의 순서를 랜덤하게 바꾸는 테스트 코드 작성

 

5. 정리

  • Collections.shuffle()은 리스트의 요소를 무작위로 섞는 메서드
  • 실행할 때마다 다른 순서를 만들어 줌
  • Random 객체를 넘겨주면 항상 같은 결과를 얻을 수 있음
  • 카드 게임, 추첨 기능 등 랜덤이 필요한 곳에서 유용

👉 리스트를 랜덤하게 섞고 싶을 때는 Collections.shuffle() 하나면 충분하다!

 

 

반응형
Comments