프로그래밍 언어/JAVA
04. 중복되지 않는 난수 출력하기
코딩 펭귄
2021. 8. 18. 19:48
난수를 출력하기 위해서는 Math.random() 메소드를 사용하여야 합니다.
Math.random()는 0 ~ 1 범위의 double 난수를 반환하는 메소드입니다.
따라서 원하는 범위의 난수를 반환하고 싶을 경우 약간의 연산이 필요합니다.
1. 0 ≤ Math.random() < 1
2. 원하는 범위의 값을 곱해 줍니다.
0 × 10 ≤ Math.random() × 10 < 1 × 10
3. 0부터 시작하는 값이기 때문에 1을 더해 줍니다.
0 + 1 ≤ Math.random() × 10 + 1 < 10 + 1
4. 정수형으로 출력되어야 하기 때문에 강제 형변환을 진행합니다.
(int)1 ≤ (int)Math.random() × 10 + 1 < (int)11
따라서 만약 1 ~ 10 범위의 난수를 구하려고 한다면 다음과 같이 작성하면 됩니다.
int num = (int)(Math.random() * 10 + 1);
난수를 중복 없이 사용하여야 하는 경우에는 먼저 수월한 저장을 위한 배열이 필요합니다.
배열을 만들어 준 후, 난수를 저장합니다.
이때 중복되지 않는 난수가 저장되려면 중첩 for문을 사용하여 중복 값인지 확인해 주어야 합니다.
만약 중복인 경우 i에서 1을 빼주어서 바깥쪽 for문이 한 번 더 실행되게 합니다.
값을 모두 저장한 후 출력하면 중복값이 없는 난수 배열이 출력됩니다.
int[] arr = new int[10];
for(int i = 0; i < arr.length; i++) {
arr[i] = (int)(Math.random() * 10 + 1);
for (int j = 0; j < i; j++) {
if (arr[i] == arr[j]) {
i--;
}
}
}
for(int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}