개발/Java

중복되지 않는 난수 생성

leebera_ 2021. 9. 2. 21:51
    Scanner scanner = new Scanner(System.in);
    int input;

    System.out.print("숫자 입력 : ");
    input = scanner.nextInt();

    int[] result = new int[input];
    boolean[] isExist = new boolean[input];
    int randomSize = input;

    for (int i = 0; i < input; i++) {

        int randNum = (int)(Math.random() * (randomSize - i));

        int j;
        for (j = 0; randNum > -1; j++) {

            if (j >= randomSize) {

                break;
            }

            if (isExist[j] == false) {

                randNum--;
            }
        }

        result[i] = j;
        isExist[j - 1] = true;
    }

    // 실패 여부 검사
    boolean isFail = false;
    for (int i = 0; i < input; i++) {

        for (int j = 0; j < input; j++) {

            if (i != j
                    && result[i] == result[j]) {

                isFail = true;
            }
        }
    }

    // 실패하지 않은 경우 결과 출력
    if (isFail == false) {

        for (int i = 0; i < input; i++) {

            System.out.print(result[i] + " ");
        }
    }