본문 바로가기

백엔드 공부/Java

Math.random()으로 정수값 뽑기

주사위를 굴릴 때, 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