수학 관련 클래스들은 java.lang, java.util 패키지에 정의되어 있으며, 난수 생성 및 수학 연산에 사용
1. Random
난수를 발생시키는 클래스.
Math.random()보다 더 직관적이고 다양한 타입의 난수 생성 가능
1) 생성자
생성자
설명
Random()
현재 시간 기반으로 seed 자동 설정
Random(long seed)
지정한 seed로 생성. 같은 seed → 같은 순서의 난수
⚠️ seed란? - 난수 생성의 기준값. - 같은 seed → 항상 같은 순서의 난수 생성 - 데이터 분석 시 결과 재현이 필요할 때 seed를 고정해서 사용 - seed를 지정하지 않으면 현재 시간 기반으로 자동 설정 → 실행할 때마다 다른 난수
⚠️ 범위 표기법 (수학 구간 표기) - 대괄호 [] → 포함, - 소괄호() → 불포함
표기
의미
예시
[a, b]
a 이상 b 이하 (양쪽 포함)
[0, 100] → 0~100
[a, b)
a 이상 b 미만 (오른쪽 불포함)
[0, 100) → 0~99
(a, b]
a 초과 b 이하 (왼쪽 불포함)
(0, 100] → 1~100
(a, b)
a 초과 b 미만 (양쪽 불포함)
(0, 100) → 1~99
2) 주요 메서드
메서드
반환 타입
설명
nextBoolean()
boolean
true 또는 false 반환
nextInt()
int
int 범위의 임의의 값 반환
nextInt(int bound)
int
0 이상 bound 미만의 값 반환
nextLong()
long
long 범위의 임의의 값 반환
nextDouble()
double
0.0 이상 1.0 미만의 값 반환
nextFloat()
float
0.0 이상 1.0 미만의 값 반환
nextBytes(byte[] bytes)
void
임의의 바이트를 배열에 저장
setSeed(long seed)
void
seed 값 재설정
Random random = new Random();
random.nextInt(100); // 0~99 사이 정수
random.nextInt(6) + 1; // 1~6 주사위
// 같은 seed → 같은 결과
Random r1 = new Random(42);
Random r2 = new Random(42);
r1.nextInt(); // r2.nextInt()와 동일한 값