본문 바로가기

Android Studio

숫자 (배열) 랜덤 섞기 - JAVA

반응형

1 부터 10까지 의 숫자를 무작위로 섞기

첫번째

public class randomMix {
    public static void main(String[] args) {
        StringBuilder builder = new StringBuilder();

        int[] a = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

        int[] b = shuffle(a);

        for (int c : b) {
            builder.append(c).append(" ");
        }

        System.out.println(builder);
    }

    private static int[] shuffle(int[] numberList) {
        for (int i = 0; i < numberList.length; i++) {
            int a = (int) (Math.random() * numberList.length);

            int tmp = numberList[a];
            numberList[a] = numberList[i];
            numberList[i] = tmp;
        }

        return numberList;
    }
}

1~10 까지의 숫자를 shuffle를 이용해 랜덤하게 다시 배열 시켜 줍니다.

 

shuffle에 a 배열을 넣으면 배열 길이 만큼 for문이 돌게 됩니다.

int a = (int) Math.random() * numberList.length 를 이용해 10 사이의 랜덤 값을 하나 만들어  a 에 저장 해 둡니다

int tmp = numberList[a] - 랜덤으로 생성된 a 값을 이용해 해당 배열 위치의 값을 tmp에 저장 합니다.

numberList[a] = numberList[i]; - for문의 i값에 해당하는 numberList[i] 위치의 값을 랜덤으로 생성된 numberList[a] 위치

에 옴겨 줍니다.

numberList[i] = tmp; - numberList[i] 위치의 값이 numberList[a]로 이동했으니 numberList[i] 는 tmp에 저장된 값을 넣어

서로 위치 이동을 해 주면서 섞어 주는 방식 입니다.

 

두번째

public class randomMix {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();

        for (int i = 1; i < 11; i++) {
            list.add(i);
        }

        Collections.shuffle(list);

        for (int aa : list) {
            System.out.print(aa + " ");
        }

    }
}

두번째는 다들 알고 계시는 Collections.shuffle을 이용해 섞어 주는 간단한 방식 입니다.

list에 1~10을 넣고 Collections.shuffle(list); 이용해 섞어 주면 끝~

 

반응형