package day06;
public class Day06_random_Test01 {
public static void main(String[] args) {
double a = Math.random(); // 1) 생성된 double은 0.0에서 1.0 사이
double b = a * 10; // 2) 10을 곱하면 0.0xxx...에서 9.0xxx... 사이
int c = (int)b; // 3) int로 형 변환(소수점 버림)하면 0에서 9 사이
int d = c + 1; // 4) 1을 더하면 1에서 10 사이
double e = (int)(Math.random() * 10) + 1; // 5) 1에서 10 사이에서 생성되는 난수
}
}
1) Math.random을 사용하여 double a를 정의하면 0.0 이상 1.0 미만의 double이 된다
-> 0.0 ≤ a < 1.0
2) 변수 a에 10을 곱하면(변수 b) 난수의 생성 범위는 0.0 초과 10.0 미만가 된다
-> 0.0 ≤ 10 * a < 10.0
3) 변수 a에 10을 곱한 후 int로 형 변환을 하면 난수의 생성 범위는 0 초과 10 미만 (0 < (int)(10 * a) < 10)이 된다
-> 0 ≤ (int) (10 * a) < 10
4) 변수 a에 10을 곱한 후 int로 형 변환 후 1을 더하면 난수의 생성 범위는 1 초과 11 미만이 된다
-> 1 ≤ (int) (10 * a) < 11
** 최종 생성되는 난수의 범위는 1 이상 10 이하가 된다
random 라이브러리를 사용하면 위 과정을 쉽게 할 수 있다
package day06;
import java.util.Random;
public class Day06_random_Test01 {
public static void main(String[] args) {
Random r = new Random();
int a = r.nextInt(10) + 1;
}
}
- int 변수명 = r.nextInt(숫자1) + 숫자2;
1) 숫자1은 큰 틀에서 난수 생성 범위를 제한한다 - 생성 범위를 0 이상 9 이하로 제한
2) 숫자2는 난수 생성 범위의 최소값과 최대값을 조정한다 - 생성 범위 제한을 1 이상 10 이하로 조정
** 난수를 특정한 숫자 범위내로 제한
ex) 1에서 6까지로 난수 생성 범위 제한
1) 숫자1에 6을 입력하여 난수가 0과 5 사이에서 생성되도록 한다
2) 숫자2에 1을 입력하여 난수가 1과 6 사이에서 생성되도록 조정한다
'국비교육 > 국비교육 복습' 카테고리의 다른 글
Day06_random_Test03 : 랜덤 구구단 문제 출력 (random 활용) (0) | 2022.08.07 |
---|---|
Day06_random_Test02 : 주사위, 로또 번호, OTP번호, 동전의 결과 (random 라이브러리 활용) (★) (0) | 2022.08.07 |
Day06_loop3_Test03 : 숫자 모래성 게임 (while 반복문 활용 - 무한 반복문) (★) (0) | 2022.08.07 |
Day06_loop2_Test01 : 초 단위로 1시간 출력 (중첩 반복문) (★) (0) | 2022.08.07 |
Day06_loop_Test14 : 구구단 문제 (combo 기능 구현) (★) (0) | 2022.08.07 |