Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- MVC 패턴
- java 기초
- 쿠버네티스
- 데이터베이스
- VS Code
- 마크다운
- 기초 선택자
- DDL
- 기본 API
- 정보처리기사
- docker 소개
- 깃허브
- github
- DB
- DB 모델링
- view
- 도커
- 쿠버네티스 기본 개념
- DB 개요
- 프로그래밍 기초
- SQL
- docker
- dql
- oracle
- 웹개발 기초
- Flutter
- java
- 필기
- ORACLE 기초
- mybatis
Archives
- Today
- Total
핑구
04. 중복되지 않는 난수 출력하기 본문
난수를 출력하기 위해서는 Math.random() 메소드를 사용하여야 합니다.
Math.random()는 0 ~ 1 범위의 double 난수를 반환하는 메소드입니다.
따라서 원하는 범위의 난수를 반환하고 싶을 경우 약간의 연산이 필요합니다.
1. 0 ≤ Math.random() < 1
2. 원하는 범위의 값을 곱해 줍니다.
0 × 10 ≤ Math.random() × 10 < 1 × 10
3. 0부터 시작하는 값이기 때문에 1을 더해 줍니다.
0 + 1 ≤ Math.random() × 10 + 1 < 10 + 1
4. 정수형으로 출력되어야 하기 때문에 강제 형변환을 진행합니다.
(int)1 ≤ (int)Math.random() × 10 + 1 < (int)11
따라서 만약 1 ~ 10 범위의 난수를 구하려고 한다면 다음과 같이 작성하면 됩니다.
int num = (int)(Math.random() * 10 + 1);
난수를 중복 없이 사용하여야 하는 경우에는 먼저 수월한 저장을 위한 배열이 필요합니다.
배열을 만들어 준 후, 난수를 저장합니다.
이때 중복되지 않는 난수가 저장되려면 중첩 for문을 사용하여 중복 값인지 확인해 주어야 합니다.
만약 중복인 경우 i에서 1을 빼주어서 바깥쪽 for문이 한 번 더 실행되게 합니다.
값을 모두 저장한 후 출력하면 중복값이 없는 난수 배열이 출력됩니다.
int[] arr = new int[10];
for(int i = 0; i < arr.length; i++) {
arr[i] = (int)(Math.random() * 10 + 1);
for (int j = 0; j < i; j++) {
if (arr[i] == arr[j]) {
i--;
}
}
}
for(int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
| 03. 이것이 자바다 5장 확인 문제 (0) | 2021.07.28 |
|---|---|
| 02. 이것이 자바다 4장 확인 문제 (0) | 2021.07.26 |
| 01. Hello, World (0) | 2021.07.26 |
| 00. Eclipse 설치하기 (0) | 2021.07.15 |
| 00. JAVA 설치하기 (0) | 2021.07.15 |