import java.util.Scanner;

public class Print1To20NumberWithRandom {
public static void main(String[] args) {
final int MAX_ARR_LENGTH = 20; // 배열 길이 : 20
final int SHUFFLE_COUNT = 60; // 셔플 횟수 : 60

Scanner sc = new Scanner(System.in);
System.out.println("아무 숫자나 누르고 Enter를 누르면 시작");
int start = sc.nextInt();

int[] num = new int[MAX_ARR_LENGTH];
for(int i = 0; i < num.length; i++){ num[i] = i + 1; } // 20개의 배열 공간에 1 ~ 20까지의 숫자 저장

for(int i = 0; i < SHUFFLE_COUNT; i++){
int rand1 = (int)(Math.random() * 20); // 0 ~ 20 사이의 난수 두 개, 배열 정보 저장 변수 한 개 선언
int rand2 = (int)(Math.random() * 20);
int blank;
blank = num[rand1];
num[rand1] = num[rand2];
num[rand2] = blank;
}
for(int i = 0; i < MAX_ARR_LENGTH; i++){ System.out.printf("[%d] ", num[i]); }
}
}

---------- [출력결과] ----------

아무 숫자나 누르고 Enter를 누르면 시작

0

[1] [7] [16] [11] [8] [13] [19] [12] [4] [9] [10] [17] [2] [3] [20] [15] [18] [14] [5] [6] 

Process finished with exit code 0

---------------------------------


아는 분들은 아시겠지만, 배열에 일단 1 ~ 20의 숫자를 넣고 난수를 이용해 무작위로 섞으면 간단히 완성입니다.