Math.random() 에서 최대 , 최소 범위 지정해서 사용하기

Denia·2022년 1월 22일
0

사용 방법 : (int) Math.random() * (최댓값-최소값+1) + 최소값 을 하면 원하는 값을 얻을 수 있다.

근데 어떻게 해서 해당 식이 나온건지 이유가 궁금하니까 그 이유도 알아보자.

  1. 먼저 Math.random()에 관해서 알아보자

    해당 메서드의 리턴 값은 다음과 같다.

    💡 0.0 ≤ 리턴값 < 1

    그러므로 해당 메서드에 적절한 값을 곱하고 더하고 빼면 우리가 원하는 범위의 값을 얻을 수 있다.

  2. 먼저 그냥 최대값을 해당 메서드에 곱하면 다음과 같은 리턴 값이 나온다

    💡 0.0 ≤ 리턴값 < 최대값

    리턴값이 최대값보다 미만인 값이 나오므로 메서드에 그냥 최대값을 곱할게 아니라 (최대값+1)의 값을 곱해야 함을 알 수 있다.

    💡 0.0 ≤ 리턴값 < (최대값+1)

  1. 이제 최소값을 만족해야 하므로 방금 구한 식에 최소값을 더해보자.

    💡 최소값 ≤ 리턴값 < (최대값+1)+최소값

    최소값 범위는 맞으나 최대값이 너무 커졌다. 최대값에서 최소값을 더했을때 최소값이 상쇄될수 있도록 미리 최소값을 빼고 곱하자. 순서는 다음과 같다.

    ① (최대값 + 1 - 최소값)을 메서드에 곱한다.

    💡 0≤ 리턴값 < (최대값+1 - 최소값)

    ② 최소값을 메서드에 더한다.

    💡 최소값 ≤ 리턴값 < (최대값+1 - 최소값 )+최소값

    ③ 우리가 원하는 값을 얻었다.

    💡 최소값 ≤ 리턴값 < (최대값+1 )

    위의 방법을 코드로 나타내면 다음과 같다.

(int) Math.random() * (최댓값 + 1 -최소값) + 최소값

profile
HW -> FW -> Web

0개의 댓글