
기본적으로 랜덤값 생성은 Seed를 통해 생성됩니다.
Seed란?
랜덤값 생성을 위한 계산식이 존재하는데, 해당 계산 식에 입력을 주어 랜덤 값을 생성합니다. 여기서 입력값을 Seedㅎ라고 합니다.
- Seed의 디폴트 값은 시스템의 현재 시간입니다.
- 동일한 Seed값을 주면 동일한 랜덤값이 나옵니다.
- Seed를 개발자가 직접 지정할 수도 있습니다.
Random값을 생성하는데에는 2가지 방법이 있습니다.
🎈 Random 클래스
- java.util 패키지 안에 있음 - import java.util.Random 해야 자바 라이브러리 임포트 가능합니다.
- Seed 설정 가능합니다.
- 함수
- boolean nextBoolean() - boolean형 난수 반환
- int nextInt() - int형 난수 반환
- int nextInt(int n) - 0~n 미만의 정수형 난수 반환
- long nextLong() - long형 난수 반환
- float nextFloat() - float형 난수 반환
- double nextDouble() - double형 난수 반환
- 예제
🎈 Math.random()
- java.lang 패키지 안에 있음 - 임포트하지 않아도 사용 가능
- Random 클래스의 nextDouble() 이용해서 Math.random()을 만듦
- 0이상 1미만의 랜덤값을 생성해주는 함수 - 반환값 double
- Seed 설정 불가
Math.random()은 seed가 항상 같기 때문에 항상 같은 난수가 나옵니다.
0이상 1미만의 랜덤값이 생성되기 때문에 반환값을 우리가 원하는 범위로 바꿔야 합니다.
밑의 예시 처럼 바꿀 수 있습니다.
public class MathRandomTest{
public static void main(String[] args){
int dice = (int)(Math.random()*6) + 1; // 1 ~ 6
// 0.0 <= Math.random() < 1.0
// 0.0 <= Math.random()*6 < 6.0
// 0 <= (int)(Math.random()*6) < 6
// 1 <= (int)(Math.random()*6) + 1 < 7
int month = (int)(Math.random()*11) + 1; // 1 ~ 12
// 0.0 <= Math.random() < 1.0
// 0.0 <= Math.random()*12 < 12.0
// 0 <= (int)(Math.random()*12) < 12
// 1 <= (int)(Math.random()*12) + 1 < 13
}
}'Java' 카테고리의 다른 글
| [Java] 다형성 / 다운 캐스팅 (1) | 2022.09.23 |
|---|---|
| [Java] 상속 (1) | 2022.09.23 |
| [Java] this (0) | 2022.09.21 |
| [Java] 접근 제어 지시자 / 정보 은닉 (0) | 2022.09.21 |
| [Java] 참조 자료형 변수 (0) | 2022.09.21 |