자바 주사위 랜덤 - jaba jusawi laendeom

이번 문제는 4장 4번 문제입니다.

4, while문과 Math.random() 메소드를 이용해서 두 개의 주사위를 던졌을 때 나오는 눈을 (눈1, 눈2) 형태로 출력하고, 눈의 합이 5가 아니면 계속 주사위를 던지고, 눈의 합이 5이면 실행을 멈추는 코드를 작성해보세요. 눈의 합이 5가 되는 조합은 (1, 4), (4, 1), (2, 3), (3, 2)입니다.

Math.random()의 정의에 대해서 검색해봤는데

대충 패스 하겠습니다... ㅎㅎ

저는 우선 숫자가 두개 저장되는 변수가 있어야하고, 합이 5개 되는 

변수가 하나 있어야 한다 생각이 들었습니다.

우선 while을 이용하여

조건 무조건 true로 조건 안으로 들어가게 하고.

그안에 if문을 넣었습니다.

두개의 변수를 더한 값이 5가 되면

break로 빠져나올수 있게 했습니다.

Math.random() 소수점으로 0~1 사이를 출력하기 때문에 * 6을 하였고, 

+1 을 해야지만 1~6의 숫자가 출력됩니다.

정수로 나와야 하기 때문에 (int)로 강제형변환을 했습니다.

출력을 하게되면 이렇게 랜덤으로 5가 되면 멈추게 됩니다.

하다가 +1을 빼먹어서 포스팅 쓰면서 수정 하게되었네요

포스팅 쓰는데도 코드 이해가 엄청 되는 것 같습니다!!

모두 화이팅!!

for문의 활용 연습 : 주사위 굴리기

내가 주사위를 굴릴떄마다 그 숫자가 랜덤적으로 나와야 하니

1.출력 문구에다가 Math.random을 적어서 숫자가 랜덤하게 나타내준다.

(지금 상태에서 계속 돌리게 되면 소수로 나오게 되는거 확인)

그 다음으로는 주사위를 한번만 굴리는게 아니라 여러번 굴려야 한다. 예를 들면 10번을 굴려야 하는데 출력문구를 10번을 작성하기에는 번거로우니 for 문을 이용한다.

for문은 반복문 종류중의 하나이다.

내가 원하는 범위를 지정을 하면 그때까지 계속 돌게 한다.

현재 내가 i 라는 변수 안에 1을 집어넣고 i가 10이 될때까지 {} 안에 들어있는 문구를 반복하게 되는데

i=1 일때 출력 문구 반복 그 후 i++ 출력을 한번 한 후 현재 i 의 값에 1을 더해줘 라는 문구이다.

그러므로 반복1회가 끝날때마다 1,2,3,4, 이렇게 1씩 늘어난다.

코드 해석

  • int가 들어가는 이유 :

 Math.random 문구가 소수로 출력되기에 정수로 형 변환이 필요하다.

  • (int) (Math.random()*6) :

괄호를 따로 한 이유는 int에만 괄호가 들어가게 되면 형변환된 정수들이 0으 먼저 바뀐후에 6과 곱하게 된다.

0*6 = 0 이므로 형변환과 random *6에도 따로 괄호를 처리해주어서 내가 원하는 숫자들이 나오게 해준다.

  • +1을 하는 이유 : 

+1을 안할 경우 출력되는 정수는 0~5까지 나오게 된다. 하지만 내가 원하는 건 주사위의 눈이다 보니 1~6 이므로 +1을 해주어야 한다.

------------------------------------------------------------

주사위 나온 눈 개수 세기

주사위를 10번 굴려서 각 눈의 수가 몇번 나오는지 구하는걸 한다.

코드 해석

1. for문을 사용하여 총 10번까지 주사위를 굴리게 하는 반복문을 작성한다.

2. 여기서는 보이지 않지만 위에다가 random 함수 사용하였다.

3. 주사위를 한번만 굴려서 그 나온 숫자를 기억해야 하므로 마지막에  break를 사용하여 다음 번 굴리는걸로 넘어가게 하였다.

각각 1부터 6까지 출력 문구를 작성하여서 몇번 나오는지 확인한다.

Toplist

최신 우편물

태그