본문 바로가기
컴퓨터/Java

[java] 배열 랜덤 섞는 방법 - [보너스!] 파이썬 리스트 랜덤 섞는 방법

by HanJoohyun 2017. 12. 24.
반응형

 

 

 

안녕하세요 한주현입니다.

 

오늘은 자바로 배열을 랜덤하게 섞는 방법


에 대하여 알아보겠습니다.

 

 


 문제 상황


입력값 -> 출력값

1부터 9까지 들어있는 배열을 넣으면 랜덤으로 섞어 출력하는 프로그램을 작성해봅시다.


입력:

[1, 2, 3, 4, 5, 6, 7, 8, 9]


출력:

[9, 3, 1, 5, 4, 6, 7, 2, 8] 



 main 메서드 선언


main 메서드 선언

 

아래 코드와 같이 배열 arr에 1부터 9까지 총 9개의 값을 갖는 배열을 선언합시다.


그리고 shuffle이란 클래스 메서드로 배열을 섞어 arr_random에 넣어 봅시다.


1
2
3
4
5
6
7
8
9
10
11
class RandomArray{
 
  public static void main(String[] args) {
    int[] arr = {1,2,3,4,5,6,7,8,9};
    System.out.println(java.util.Arrays.toString(arr));
        
    int[] arr_random = shuffle(arr);
    System.out.println(java.util.Arrays.toString(arr_random));
  }
 
}
cs

 

 


 shuffle 메서드 작성

 

shuffle 메서드 작성


int[]배열을 입력받아 랜덤으로 섞어 int[]배열을 반환하는 클래스 메서드 shuffle을 만들어봅시다


라인4: 배열의 크기만큼 for문을 돌립니다

라인5,6: 배열의 크기만큼의 인덱스를 얻는 정수를 얻어 각각 i, j 에 넣습니다

라인 8,9,10: tmp, arr[i], arr[j]에 넣으며 섞습니다 ㅎㅎ;;


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class RandomArray {
 
  public static int[] shuffle(int[] arr){
    for(int x=0;x<arr.length;x++){
      int i = (int)(Math.random()*arr.length);
      int j = (int)(Math.random()*arr.length);
            
      int tmp = arr[i];
      arr[i] = arr[j];
      arr[j] = tmp;
    }
        
    return arr;
  }
 
  public static void main(String[] args) {
    int[] original = {1,2,3,4,5,6,7,8,9};
    System.out.println(java.util.Arrays.toString(original));
        
    int[] result = shuffle(original);
    System.out.println(java.util.Arrays.toString(result));
  }
 
}
 
cs


짠! 코드 완성 ㅎㅎㅎ



좀 더 추가적으로 섞고 싶으시다면,


라인4의 for문에서 x<arr.length 를 x<arr.length*2 로


배열의 두 배 만큼 섞는다면 더 많이 섞이겠지요?? ㅎㅎ




 [보너스] 파이썬 방법

파이썬으로 배열 랜덤 하기


여담입니다만, 파이썬으로 배열 랜덤을 구현은 아래와 같이 합니다..


1
2
3
4
5
>>> import random
>>> l = [123456789]
>>> random.shuffle(l)
>>> l
[726 513894]
cs


ㅎㅎㅎ.. 역시 짧군요

같은 기능을 여러 언어로 구현해 보는것은 각 언어의 특징도 잘 알 수 있고 

프로그래밍 학습에 좋은 방향이라고 생각합니다!!!


여러분들도 해보세요 ㅎㅎ



 

오늘은 java 프로그래밍으로 배열의 랜덤 섞기에 대하여 알아봤습니다.


여러분들께 도움이 되셨음 좋겠습니다 ㅎㅎ.


다들 열공하시고!


그럼 다음 시간에 만나요!

 

 

 


반응형

댓글