행운의 주사위

public class dice{
  public static void main(String[] args) {
	double x = 0;
	double[] count = {0, 0, 0, 0, 0, 0, 0};
	final n = 10000;
	for(int i = 0; i <= n; i++) {
		x = rollDice();
		System.out.printf("주사위의 눈: %.0f\n", x);
		if(x >= 7) {
			count[6]++;
		}
		else if(x >= 6) {
			count[5]++;
		}
		else if(x >= 5) {
			count[4]++;
		}
		else if(x >= 4) {
			count[3]++;
		}
		else if(x >= 3) {
			count[2]++;
		}
		else if(x >= 2) {
			count[1]++;
		}
		else if(x >= 1) {
			count[0]++;
		}
  }
	System.out.println("\n");
	for(int i = 0; i != 7; i++) {
		System.out.printf("%d이(가) 나온 횟수: %.0f\n", i + 1, count[i]);
	}
	System.out.print("\n");
	for(int i = 0; i != 7; i++) {
		System.out.printf("%d의 백분율: %.2f%%\n", i + 1, count[i] / n * 100);
	}
  }
  
  public static double rollDice() {
    return Math.round(Math.random() * 6 + 1);
  }
}

말 그대로 7이 나오는 주사위…
우연히 0 ~ 1까지의 숫자에 6을 곱하면 무조건 5.99999… 이하가 나온다는 사실을 알고 충격먹어서 만들었읍니다.
물론 알게된 경로는 여기입니다.

n.5 이상이 나올경우 반올림해서 값을 반환합니다. 덕분에 가끔 7이 나옵니다.
추가로 전부 다 굴리면 7이 몇 번 나오는지 보고해줍니다.
여기서 더 재밌게 만들고 싶은데 딱히 아이디어가 생각나질 않네요.

…아니 그보다 나는 언제부터 이런 쓰레기를 만드는데 집중하고 있었던거냐고;;

2 Likes

ㅋㅋ 재밌게 놀으셨군요.

결과가 어떻게 나오시나요?
1 과 7이 나올 확률이 8.33%, 2 ~ 6이 16.67%으로 수렴하지 싶은데요.

본연의 목적은 모르겠지만? round가 아니라 floor 함수를 사용하시면 7이 없어질 거에요.
random 함수의 결과 값 범위는 0 <= return < 1 이니까요.

그리고 if 문 깔끔하게 정리하면 보기 좋겠네요. 굳굳

2 Likes

Math.floor(Math.random() * (maximum - minimum + 1)) + minimum;

1 Like