프로그래밍/JAVA Spring

[JAVA 자바] Math.random()을 사용한 난수 생성

hectick 2022. 1. 12. 12:31

자바의 정석으로 임의의 정수만들기(기초편 109쪽)를 공부하던 중에, 학교에서 C언어로 과제할 때 난수 생성을 자주 했던 기억이 있어서 뭔가 앞으로 두고두고 쓰일 함수라는 예감에 포스팅하게 되었다.

 

Math.random() 메서드

Math.random() 메서드는 0.0과 1.0사이의 범위에 속하는 하나의 double값을 반환하는 함수이다.
반환하는 범위는 0.0 이상 1.0 미만임에 주의해야 한다.

 

Math.random()을 간단하게 X라고 하면, 부등식을 이용해서 자신이 원하는 범위의 수를 표현할 수 있다. 

0.0 <= X < 1.0

예를 들어 1과 10 미만의 '실수'를 생성하고 싶다면,

0.0 * 9 + 1 <= X * 9 + 1 < 1.0 * 9 + 1 

10과 100 미만의 '정수'를 생성하고 싶다면, 형변환을 섞어주면 된다.

(int)(0.0 * 90) + 10 <= (int)(X * 90) + 10 < (int)(10.0 * 90) + 10

 

다음은 Math.random() 을 이용해 특정 범위의 난수와 정수를 생성하는 코드이다.

class practice {
	public static void main(String args[]) {
		
		//double 생성
		System.out.println("0이상 1미만의 난수 생성하기 : " + Math.random());
		System.out.println("0이상 100미만의 난수 생성하기 : " + Math.random()*100);
		
		//int 생성
		System.out.println("0이상 3미만의 정수 생성하기 : " + (int)(Math.random()*3));
		System.out.println("1이상 10미만의 정수 생성하기 : " + ((int)(Math.random()*9) + 1));
		System.out.println("10이상 1000미만의 정수 생성하기 : " + ((int)(Math.random()*990) + 10));
	}
}

출력 결과는 아래에 사진 첨부한다!

 

출력 결과