Java

[Java] Random값 생성

인생은단짠단짠 2022. 9. 22. 13:23

 

기본적으로 랜덤값 생성은 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()

 

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