임의의 정수 만들기
반응형
임의의 정수 만들기
- Math.random() - 0.0과 1.0사이의 임의의 double값을 반환
사실, 임의의 정수가 아니라 임의의 실수 만들기라고해도 상관없다.
임의의 정수를 "난수"라고 한다.
난수는 게임이나 섞기 할때 많이 사용한다.
그때 사용하는 메서드가 Math.random() 메서드이다.
근데 이 메서드는
0.0 <= Math.random() < 1.0
즉, 0.0이상 1.0 미만 사이에 있는 double값을 반환한다. (0~0.9999...)
그래서 이걸 가지고 원하는 범위에 있는 난수를 얻으려면 어떻게 해야하는지를 알아보도록 하겠다.
예를 들어서 내가 1~3 사이의 정수를 얻고싶으면 어떻게 해야할까?
먼저, 각 변에 3을 곱한다.
이 상태에서는 0.0~2.9999... 사이의 값을 얻을 수 있다.
내가 얻고싶은 난수의 범위는 1~3사이의 정수이다. (1,2)
다음단계를 보자.
형변환을 한다. 우리가 얻고싶은 것은 정수니까, 각변의 실수를 int로 형변환 한다.
그러면 0 <= (int)(Math.random()*3) <3이 범위가 된다. 즉 0부터2까지 이다.
내가 얻고싶은 것은 1~3 사이의 정수이다. 이제 어떻게 하면 될까?
각변에 1을 더한다.
그러면, 범위가 1 <= (int)(Math.random() * 3) + 1 < 4가 된다.
결국 처음에 원했던 1~3사이의 정수를 얻을 수 있다.
형변환과 덧셈, 곱셈등을 이용하는데,
처음에 곱해준 값은 내가 원하는 개별값의 갯수와 동일하다. (만약에 주사위의 범위 1~6을 구하고 싶으면 6을 곱하면 된다.)
[Ex4_7] 예제
public class Ex4_7 {
public static void main(String[] args) {
int num = 0;
// 괄호{} 안의 내용을 20번 반복한다.
// Quiz1. 1~10사이의 난수를 20개 출력하시오
// 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
// for (int i = 1; i <= 20; i++) {
// System.out.println(Math.random()); // 0.0 <= x < 1.0
// System.out.println(Math.random()*10); // 0.0 <= x < 10.0
// System.out.println((int)(Math.random()*10)); // 0 <= x < 10, 0~9
// System.out.println((int)(Math.random()*10)+1); // 1 <= x < 11, 1~10
//Quiz2. -5~5사이의 난수를 20개 출력하시오
// -5, -4, -3, -2, -1, 0, 1 ,2 ,3 ,4, 5
for (int i = 1; i <= 20; i++) {
// System.out.println(Math.random()); // 0.0 <= x < 1.0
// System.out.println(Math.random()*11); // 0.0 <= x < 11.0
// System.out.println((int)(Math.random()*11)); // 0 <= x < 11
System.out.println((int)(Math.random()*11)-5); // -5 <= x < 6
}
}
}
반응형
'JAVA' 카테고리의 다른 글
중첩 for문 (0) | 2022.03.20 |
---|---|
for문 (0) | 2022.03.19 |
switch문 (0) | 2022.03.18 |
if-else문, 중첩 if문 (0) | 2022.03.18 |
조건문 if문과 if-else문 (0) | 2022.03.17 |