Math.random()을 이용해 주사위 2개를 굴리는 코드 짜보기
▷ 완성된 코드 전체 예제
import java.lang.Math;
import java.util.Random;
public class Dice {
public static void main(String[] args) {
int a = DiceA.roll();
int b = DiceB.roll();
System.out.println(a);
System.out.println(b);
}
class DiceA {
public static int roll() {
double fir = 6 * Math.random();
int sec = (int) fir;
int result = sec + 1;
return result;
}
}
class DiceB {
public static int roll() {
double fir = 6 * Math.random();
int sec = (int) fir;
int result = sec + 1;
return result;
}
}
}
▶ 코드 실행시 나오는 결과값
2 //매번 다른 1~6사이의 값이 랜덤 출력됨
5 //매번 다른 1~6사이의 값이 랜덤 출력됨
<코드 분석>
▷ main 메소드 내의 코드
- int 타입의 a에는 DiceA클래스의 roll()메소드를 담아주었습니다.
- int 타입의 b에는 DiceB클래스의 roll()메소드를 담아주었습니다.
- a는 DiceA클래스의 roll()메소드의 결과를 반환하고, b는 DiceB클래스의 roll()메소드의 결과를 반환합니다. 이 변환 값들을 System.out.println()로 결과값이 출력되도록 했습니다.
public static void main(String[] args) {
int a = DiceA.roll();
int b = DiceB.roll();
System.out.println(a);
System.out.println(b);
}
▷ DiceA, DiceB 클래스 내의 코드
- double(실수)타입의 fir에는 0.0 이상, 6.0미만의 랜덤한 실수가 담길 수 있도록 했습니다.
- sec 은 int(정수) 타입으로 지정했고 double 타입의 fir를 실수화 해서 0이상 6미만의 랜덤 숫자가 담기도록 했습니다.
- result 에서는 1~6까지의 숫자를 담기 위해 0~5에 각각 +1을 해서 결과를 만들어주고 그 결과(result)를 반환하도록 했습니다.
※ DiceB도 동일한 코드로 구성
class DiceA {
public static int roll() {
double fir = 6 * Math.random();
int sec = (int) fir;
int result = sec + 1;
return result;
}
}
Math.random() : 파라미터가 없는 0.0이상 1.0미만의 실수를 반환하는 메소드
자바에서 제공하는 Math.random() 메소드는 파라미터가 없는 대표적 예입니다. 해당 메소드는 0.0 이상 1.0 미만의 임의 실수를 반환합니다.
여기서, 파라미터가 없다는 말은 Math.random()<- 괄호 안에 파라미터를 넣는 자리에 아무것도 넣지 않아도 된다는 뜻입니다.
[0.0 <= Math.random() <1.0]
0.0이상, 1.0미만의 실수를 반환하는 메소드 이기 때문에 double 타입을 이용할 수 있습니다.
밑에 예시 코드에서는 "num"이라는 이름에 랜덤메소드를 담았습니다.
double num = Math.random();
Math.random()을 이용해서 1~10 사이의 정수 출력하기
▷ 정수 출력예시 코드
// 0.0 <= r < 10.0
double r = 10 * Math.random();
// 0, 1, ..., 9 중 하나
int temp = (int) r;
// 1, 2, ..., 10 중 하나
int n = temp + 1;
System.out.println(n);
0.0이상 10.0미만의 실수를 출력해주기 위해서 Math.random()에 10을 곱한 값을 r에 넣어주었습니다.
다만, 실수인 상태의 r은 3.4, 6.2등의 숫자를 모두 출력하기 때문에 정수로 만들어주는 코드도 넣어주었습니다. 이제 temp에는 0, 1, 2, ... ,8, 9 라는 10개의 숫자가 담기게 됩니다. 제가 원했던 결과는 1~10까지의 랜덤한 숫자였기 때문에 temp에 1값을 더해주면 1부터 10까지 10개의 숫자를 얻을 수 있습니다.
▶ 출력 결과
5 //매번 1~10의 랜덤한 숫자가 출력됨
게시글이 도움이 되었다면
[로그인]이 필요 없는 ❤ 눌러주세요:)
'JAVA' 카테고리의 다른 글
[Java | 웹개발] @JsonFormat 어노테이션 사용으로 Date 형식 바꾸기 / 시간 서울기준으로 맞추기 (0) | 2022.11.18 |
---|---|
[Java] Array, ArrayList, HashMap 사용법, 데이터 출력법, 차이점 (0) | 2022.11.04 |
[Java] if문의 활용 | if, if - else, else - if (0) | 2022.10.28 |
[Java] printf() 메소드를 이용 - %s, %d, %f 사용법 (0) | 2022.10.27 |
[Java] 예외처리 - throws / try with resources (0) | 2022.10.18 |