주사위를 굴릴 때, 1~6 사이의 랜덤값이 나오게 된다.
이것을 프로그램으로 출력하기 위해 Math.random() 함수를 이용하게 되는데, 이 원리를 이해해보자.
1. Math.random()은 0.0과 1.0 사이에 속하는 double 타입의 난수 하나를 리턴한다. 정확한 범위는 아래와 같다.
0.0 <= Math.random() < 1.0
2. 1~10 사이의 정수 중에서 하나의 정수를 얻기 위해 각 변에 10을 곱하면 아래와 같은 범위에 속하는 double 타입의 값을 얻을 수 있다.
0.0 * 10 <= Math.random() * 10 < 1.0 * 10
// 0.0 ~ 10.0 사이의 난수를 얻게 된다.
3. 이 상태에서 각 변을 int 타입으로 강제 타입 변환하면 다음과 같은 범위에 속하는 하나의 정수값을 얻을 수 있다.
(int)0.0 <= (int)(Math.random() * 10) < (int)10.0
// 0 (0, 1, 2, 3, 4, ... 9) 10
4. 여기에서 각 변에 1을 더하면 비로소 1~10 사이의 정수 중 하나의 정수를 얻게 된다.
0 + 1 <= (int)(Math.random() * 10) + 1 < 10 + 1
// 1 (1, 2, 3, 4, ... 10) (11)
이 원리를 이용하면 start 부터 시작하는 n개의 정수 중에서 임의의 정수 하나를 얻기 위한 연산식을 얻을 수 있다.
int num = (int)(Math.random() * n) + start;
주사위의 랜덤값을 구하려면 다음과 같은 연산식을 사용하면 된다.
int num = (int)(Math.random() * 6) + 1;
'백엔드 공부 > Java' 카테고리의 다른 글
| [Java] 열거 타입 (0) | 2023.11.24 |
|---|---|
| [Java] 향상된 for문 (2) | 2023.11.24 |
| [Java] 문자열 비교 (2) | 2023.11.24 |
| 삼항 연산자 (0) | 2023.11.22 |
| Mac에서 Java 설치, 경로 설정 및 이클립스 설치 (0) | 2023.11.20 |