본문 바로가기

국비교육/국비교육 복습

Day06_random_Test01 : 난수(random)의 생성 범위 제한(Math.random()와 random 라이브러리)

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 사이에서 생성되도록 조정한다