임의의 정수 만들기 Math.random()

정순동·2023년 11월 27일
0

자바기초

목록 보기
12/89

난수(임의의 수)를 얻기 위해서는 Math클래스의 random()메서드를 사용한다 이 메서드는
0.0이상 1.0미만의 범위에 속하는 하나의 double값을 반환한다.

0.0 <= Math.random() < 1.0

만일 1 과 3 사이의 정수를 구하고 싶다면 다음과 같은 과정으로 난수를 구할 수 있다.

  1. 각 변에 3을곱한다
	0.0 * 3 <= Math.random() * 3 < 1.0 * 3
		0.0 <= Math.random() * 3 < 3.0
  1. 각 변을 int형으로 변환한다.
	(int)0.0 <= (int)(Math.random() * 3) < (int)3.0
    	   0 <= (int)(Math.random() * 3) < 3
  1. 각 변에 1을 더한다.
	0 + 1 <= (int)(Math.random() * 3) + 1 < 3 + 1
    	1 <= (int)(Math.random() * 3) + 1 < 4

자, 이제는 1과 3 사이의 정수중 하나를 얻을 수 있다. 1은 포함되고 4는 포함되지 않는다.

Math.random()에서는 최소 0 ~ 0.999... 를 얻을 수 있기에 내가 원하는 최소값 y를 정하고,
최대값은 x + y로 정한다면
y =< 랜덤정수 < x + y 혹은
y =< 랜덤정수 =< x + y - 1 의 값을 얻을 수 있다.
int random = (int)(Math.random() * (x + y)) + y;

아래 예제는 3이상 10이하의 정수만 반환될것이다.

int random = (int)(Math.random() * 8) + 3;

0개의 댓글