사용 방법 : (int) Math.random() * (최댓값-최소값+1) + 최소값
을 하면 원하는 값을 얻을 수 있다.
근데 어떻게 해서 해당 식이 나온건지 이유가 궁금하니까 그 이유도 알아보자.
먼저 Math.random()에 관해서 알아보자
해당 메서드의 리턴 값은 다음과 같다.
💡 0.0 ≤ 리턴값 < 1
그러므로 해당 메서드에 적절한 값을 곱하고 더하고 빼면 우리가 원하는 범위의 값을 얻을 수 있다.
먼저 그냥 최대값을 해당 메서드에 곱하면 다음과 같은 리턴 값이 나온다
💡 0.0 ≤ 리턴값 < 최대값
리턴값이 최대값보다 미만인 값이 나오므로 메서드에 그냥 최대값을 곱할게 아니라 (최대값+1)의 값을 곱해야 함을 알 수 있다.
💡 0.0 ≤ 리턴값 < (최대값+1)
이제 최소값을 만족해야 하므로 방금 구한 식에 최소값을 더해보자.
💡 최소값 ≤ 리턴값 < (최대값+1)+최소값
최소값 범위는 맞으나 최대값이 너무 커졌다. 최대값에서 최소값을 더했을때 최소값이 상쇄될수 있도록 미리 최소값을 빼고 곱하자. 순서는 다음과 같다.
① (최대값 + 1 - 최소값)을 메서드에 곱한다.
💡 0≤ 리턴값 < (최대값+1 - 최소값)
② 최소값을 메서드에 더한다.
💡 최소값 ≤ 리턴값 < (최대값+1 - 최소값 )+최소값
③ 우리가 원하는 값을 얻었다.
💡 최소값 ≤ 리턴값 < (최대값+1 )
위의 방법을 코드로 나타내면 다음과 같다.
(int) Math.random() * (최댓값 + 1 -최소값) + 최소값