프로그래밍 언어/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] + " ");
}