선생님이 재미(?)있는게 있다며 뽀너스로 알려주신 내용! 문제를 풀어보자보자
Math.ramdom() = 0~1 사이의 실수를 임의로 만들어주는 메소드
0~1사이의 실수란 > 0.xxxxxxx(x는 임의의숫자)
이것을 사용하면 랜덤값을 출력할 수 있다.
ex) 0~9사이 랜덤값 5개 출력
5개를 뽑을 거니까 for문 안에 출력문 넣어주기
0~1사이의 실수가 나오기 때문에 *10을 해주면 0~9의 임의의 숫자가 만들어질것이다.
0.xxxxxx * 10 = x.xxxxx(x는 임의의숫자로 0~9중 하나가 나올것임)
뒤에 소수점을 없애기 위해 실수>정수로 만들어 주면 됨.
기본형 정수 타입의 int로 형변환을 해주면 정수로 변환!
여기서 기출 변형 문제
0~5사이의 랜덤값을 출력하고 싶다면 * 6을 했다.
왜?
Math.random은 0~1사이의 실수가 나오기 때문에 * 6을 해주면 0~6사이의 실수가 나올것이기 때문에!
0부터 최대로 올 수 있는 숫자는 5 이다
그렇다면! 1~5사이의 값을 출력하고싶다. 어떡해야할까?
소수점 첫번째 자리가 0일시 다른 어떠한 숫자를 곱해도 그대로 0이다.
그렇기에 나온숫자에 +1을 해주어 0이 나올수 없겠끔 해줘야 한다.
그러면 곱하는 수는 (n * x)을 했을때 나오는 수의 첫번째에 -1을 해주어 범위를 조정하면 된다. 왜냐하면 +1을 따로 해줬으니까.
범위를 설정했을시
12~17
최소값이 12이기 때문에 나중에 +12를 해줘야한다.
그렇다면 최대로 나올 수 있는 수는 5이다.
그럼 * 6을 해줘서 0 ~ 6까지의 실수가 나오게하고 나온값에 +12를 해주면 된다.
(심화)문제3 로또 번호 랜덤으로 생성하기
// 1~45 사이 임의의 번호 6개 선택하고, 오름차순으로 정렬 > 출력
버블정렬을 사용했다. 비교해서 더 작으면 자리 바꿔주기를 첫번째 부터 차례대로 비교
1~45 임의의 숫자가 나오도록 범위설정 해주기 위해 계산하는게 시간이 좀 걸렸고 그외에는 기존에 배웠던 정렬 사용.
재미(?)있는 랜덤값 출력 문제 끝~!
'basic > java 실습' 카테고리의 다른 글
day 09 연습문제 - class 변수,메서드 (0) | 2021.05.03 |
---|---|
day08 연습문제 - 다차원배열(정방배열,비정방배열) (0) | 2021.05.01 |
day06 연습문제 - 다차원배열, 배열 (0) | 2021.05.01 |
day07 연습문제 - 다차원배열 (0) | 2021.04.29 |
day06 연습문제 - 배열 (0) | 2021.04.28 |