티스토리 뷰

전 글에서 트롤러 계산기라는 프로그램을 친구들에게 간단하게 보여줬더니 친구 한놈이 아이디어를 냈다.

우리팀 혹은 상대팀에 부캐가 있을 확률과 대리기사가 있을 확률까지 계산해서 승률을 알아보라는 것이다.

오 ~ 재밌겠는데 ~ 하고 해보았다. 미흡하고 조잡하지만 그냥 흥미롭게 봐주면 좋겠다 ... !!

 

프로그램 설명 : 

롤 유저 10명 중 
정상인 6명
트롤러 2명
부캐 1명
대리 1명
이란 가정 하에 돌렸고 

블루팀 원딜자리에는 내가 들어감.  (* 나는 실제로 롤에서 원딜러이다)
난 당연히 정상인으로 고정되서 계산됨.

트롤러 + 5, 정상인 + 15점 , 부캐 + 20점 , 대리 + 30점해서
블루팀 레드팀 총합이 더 큰 쪽이 이기게 판정
동점이면 게임 내용까진 알수없으니 어쩔수없이 draw

세밀한 확률을 얻기위해 1000판을 시뮬을 돌림.
(판수 더 늘릴수도있음)
여기서 draw한 판을 배제하고 승률 계산

결과 출력

 

<코드공개>

package NewProject;

import java.util.Random;

class MakeTeam{

	Random r = new Random();

	int[] array = new int[5];

	String team;

	MakeTeam(String team){

		this.team = team;

		for(int i=0;i<array.length;i++) {

			array[i] = r.nextInt(10); //0~9까지의 임의 숫자 넣기

		}

	}

}

class CheckTroll{

	String[] trollchk = new String[5];

	int jumsu;


	CheckTroll(MakeTeam mt) {

		mt = new MakeTeam(mt.team); //팀을 생성했을시에 작성한 팀이름을 가져옴.

		for(int i=0;i<mt.array.length;i++) {

			if(mt.array[i] == 0 || mt.array[i] == 1) { //숫자 0을 트롤러로 간주 , 즉 트롤은 1/10 확률로 들어온다.

				trollchk[i] = "트롤러";
				jumsu += 5;

			}else if(mt.array[i] >=2 && mt.array[i] <= 7){

				trollchk[i] = "정상유저";
				jumsu += 15;

			}else if(mt.array[i] == 8) {
				trollchk[i] = "부캐유저";
				jumsu += 20;
			}else if(mt.array[i] == 9) {
				trollchk[i] = "대리기사";
				jumsu += 30;
			}

		}

	}

	public void print() {

		String[] position = {"탑","정글","미드","원딜","서폿"};



		for(int i=0;i<trollchk.length;i++) {

			System.out.println(position[i] + " : " + trollchk[i]);

		}

	}



}


public class Lol {
	public static void main(String[] args) {
		
		int win = 0;
		int lose = 0;
		int draw = 0;
		
		int i=0;
		while(i<1000) {
			MakeTeam red = new MakeTeam("레드팀:상대팀"); //레드팀 생성완료

			MakeTeam blue = new MakeTeam("블루팀:우리팀"); //블루팀 생성완료

			blue.array[3] = 7; //사재원 들어감

			CheckTroll chkred = new CheckTroll(red); //레드팀 트롤러 유저 확인

			CheckTroll chkblue = new CheckTroll(blue); //블루팀 트롤러 유저 확인
			
			chkblue.trollchk[3] = "사재원";

			System.out.println();
			System.out.println("큐가 잡혔습니다.");

			System.out.println("-----" + red.team + " 팀원----- ");

			chkred.print();

			System.out.println("-----" + blue.team + " 팀원----- ");

			chkblue.print();
			
			if(chkred.jumsu > chkblue.jumsu) {
				System.out.println("당신팀이 졌습니다.");
				lose += 1;
			}else if(chkred.jumsu < chkblue.jumsu) {
				System.out.println("당신팀이 이겼습니다.");
				win += 1;
			}else if(chkred.jumsu == chkblue.jumsu) {
				System.out.println("비겼습니다.");
				draw += 1;
			}
			System.out.println();
			i ++;
		}
		System.out.println("-----1000판 경기 결과-----");
		System.out.println("이긴 횟수 : " + win);
		System.out.println("진 횟수 : " + lose);
		System.out.println("비긴 횟수 : " + draw);
		System.out.println("----------------------");
		double hap = win + lose; //전체 횟수
		double sss = (win/hap) * 100;
		System.out.println("사재원 승률  : " + sss + "%");


	}
}

출력창까지 !

출력화면

내가 직접 생각한 또 궁금하기도 한 것을 이렇게 스스로 코드로 입력하여 해보니 코딩을 배우길 정말 잘했다는 생각이 드는 하루다. 내가 머릿속에 떠올리는걸 구현할수있다는 것은 정말 신이 주신 선물과도 같다.

더욱 더 정진하여 실력을 키워야겠다. 코딩은 역시 파고팔수록 정말 재밌고 정말 힘들다 ㅎㅎ

 

또 느낀점 하나는 롤에서 팀탓을 하지말자 이거다 ㅋㅋㅋㅋ 비록 조잡한 프로그램이지만 몇번이나 돌려봤지만 대충 47~51%의 승률이 나오더라 결국에는 가장 큰 변수는 내 실력이다. 내가 현지인 이상 수준으로 잘하면 티어를 충분히 올릴수있다. 이 프로그램으로 인해 브 = 실 = 골 = 플 = 다  라는 이론은 완벽히 깨진것이 아닌가...? ㅎㅎ

 

 

 

 

감사합니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함