Math.random 메소드는 0.0 <= ~ < 1.0 사이의 double 타입 난수를 리턴한다.
0.0 <= Math.random() < 1.0
주사위의 범위를 구해보자. 여기서 각 변에 6을 곱하면 0.0 <= ~ < 6.0 사이의 double 타입 난수를 얻게 된다.
(0.0 * 6) <= (Math.random() * 6) < (1.0 * 6)
그리고 각 변을 int 타입으로 강제 타입 변환하면 0 ~ 5 중에서 하나의 정수 난수를 얻게 된다.
(int) 0.0 <= (int)(Math.random() * 6) < (int) 6.0
마지막으로 각 변에 1을 더하면 비로소 1 ~ 6 중에서 하나의 정수 난수를 얻게 된다.
1 <= (int)(Math.random() * 6 + 1) < 7
그렇다면 start 부터 시작하는 n개의 정수 중에서 하나의 정수를 얻기 위한 코드는 다음과 같이 작성할 수 있다.
int num = (int)(Math.random() * n) + start;
로또 번호 (1, ··· , 45) 중 하나를 뽑기 위해서도 다음 코드를 사용할 수 있다.
int num = (int)(Math.random() * 45) + 1;'Language > JAVA' 카테고리의 다른 글
| [JAVA] for 문 (0) | 2024.09.03 |
|---|---|
| [JAVA] switch 문 (7) | 2024.09.03 |
| [JAVA] if 문 (2) | 2024.09.03 |
| [JAVA] 연산의 방향과 우선순위 (0) | 2024.09.03 |
| [JAVA] 삼항(조건) 연산자 (0) | 2024.09.03 |