본문 바로가기
Study/java

Math.random()으로 1~10까지의 수 발생시키기

by 얏옹이 2022. 10. 28.
반응형

Math 클래스는 Java에서 수학계산에 사용할수 있는 정적(Static) 메소드를 제공합니다.

 

그중에서 Math.random()은 0.0부터 1.0 미만, 즉 0,99999999999까지의 난수를 발생시키는 메소드입니다.

 

하지만 발생되는 난수가 소수라서, 보통 정수가 많이 사용되기때문에 

 

n부터 n까지의 난수를 정수로 구하는 법을 알아보겠습니다.

 

랜덤으로 정수를 구하는 공식은

 

시작숫자이상 ~ (시작숫자+n) 미만의 난수를 얻어야합니다. (전 수포자라 그냥 외우겠습니다..)

 

그럼 예를들어서 1부터 10까지의 숫자를 랜덤으로 얻고싶으면

 

Math.random()은 0.0부터 1.0 미만입니다.

여기에서 소수를 정수로 바꿔주려면  일단 10을 곱해야합니다.

 

Math.random() * 10을하면 0.0부터 9.99999999의 난수가 발생되겠네요.

이걸 Int로 강제형변환 해주면

 

(int)Math.random() * 10 이 되겠습니다.

 

Math.random()은 double 타입의 난수가 발생되는데

double보다 작은 타입인 int로 변환해주려면 강제형변환을 해줘야하고 강제 형변환을 해주면서

소숫점 뒤의 값들은 없어지게됩니다(손실)

 

그럼 이제 0~9까지의 숫자만 나온다는건데... 원하는건 1부터 10까지의숫자입니다. 

 

그럼 10을 곱한거에서 + 1을 더하면 됩니다.

 

산출을 먼저 하고 나서 그 뒤에 강제타입변환을 해줘야하니 () 괄호를 한번 더 사용해서

(int)(Math.random()*10) + 1;

이렇게됩니다.

 

스타트숫자는 1이 되는거고 스타트 숫자 + n 미만(11)까지만 출력되야하니 n은 10이여야 하고

그래서 10을 곱하고 + 1을 더해주게 되는것이죠.

 

7까지만구하고싶다면

(int)(Math.random()*7)+1 이 되는겁니다.

 

계산후 강제형변환을 했으니 그 타입에 맞는 변수에 넣어주면 되는거죠.

 

int Score = (int)(Math.random()*10) + 1; 가 됩니다.

 

이제 Score는 Java에서 1부터 10사이의 무작위의 수를 하나 담아서 줬습니다.

 

System.out.print(score)를 반복해서 실행하면 1부터 10까지의 수가 랜덤으로 출력될겁니다.

 

 

 

반응형