본문 바로가기

국비교육/국비교육 복습

Day06_random_Test09 : 확률 구현 (★)

(Q) 아이템 강화 시뮬레이션
강화 확률은 아이템과 같다
- 성공 : 25% 확률로 아이템의 레벨이 +1 됩니다
- 실패 : 25% 확률로 아이템의 레벨이 -1 됩니다
- 현상 유지 : 50% 확률로 아이템의 레벨이 변하지 않습니다
(단, 아이템의 레벨은 0보다 작거나 15보다 커지는 일은 없습니다)

 

 

package day06;

import java.util.Random;

public class Day06_random_Test09 {

	public static void main(String[] args) {
		
		Random r = new Random();
		
		int itemLV = 0;
		int count = 0;
		while(true) {
			int range = r.nextInt(100) + 1;
			if(range <= 25) {
				itemLV ++;
				count ++;
			}
			else if(range <= 50) {
				itemLV --;
				count ++;
				if(itemLV <= 0) {
					itemLV = 0;
				}
			}
			else {
				itemLV += 0;
				count ++;
			}
			
			if(itemLV >= 15) {
				break;
			}
		}
		
		System.out.println("아이템 15강 강화 성공");
		System.out.println("소요된 강화 횟수 : " + count);
	}
}

 

 

★ random을 이용한 확률 구현의 원리

- int range = r.nextInt(100) + 1; (1부터 100까지 쓰여진 공을 상자에 넣는다)

- while 반복문을 통해 공을 뽑는 행동을 반복한다 ~ 아이템 레벨(itemLV)이 15 이상이 될 때까지

- 공에 쓰인 숫자가

  i) if(range ≤ 25) (0 초과 25 이하일 때) : 아이템 레벨(itemLV)이 1만큼 증가한다 + 강화 횟수(count) 증가

  ii) else if(range ≤ 50) (25 초과 50 이하일 때) : 아이템 레벨(itemLV)이 1만큼 감소한다 + 강화 횟수(count) 증가

      + if(itemLV <= 0) : 만약 아이템 레벨(itemLV)이 0 이하가 되면 0으로 한다

  III) else (50 초과 100 이하일 때) : 아이템 레벨(itemLV)의 변화는 없다 + 강화 횟수(count) 증가

- if(itemLV >= 15) : 아이템 레벨이 15 이상이 되면 반복문을 탈출한다