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까지의 수가 랜덤으로 출력될겁니다.
'Study > java' 카테고리의 다른 글
11월 2일 숙제, Class, Method, Field (0) | 2022.11.02 |
---|---|
함수 정의하기 (0) | 2022.10.30 |
Swhich문과 Math.random() 메소드를 이용한 계절 나타내기 (0) | 2022.10.30 |
Java Math.random() 메소드를 이용한 로또번호 생성하기(중복검사X) (0) | 2022.10.28 |
Java 변수의 선언 (0) | 2022.10.27 |