반응형
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
- 문자열
- 테이블
- vscode
- 배열
- windows
- 자바
- Eclipse
- IntelliJ
- string
- 자바스크립트
- Button
- 이클립스
- CSS
- js
- date
- html
- Maven
- table
- CMD
- 인텔리제이
- Array
- ArrayList
- 정규식
- list
- javascript
- 이탈리아
- Visual Studio Code
- json
- input
- Java
Archives
- Today
- Total
어제 오늘 내일
[Java] 로또 번호 생성하기 본문
Java로 로또 번호 생성하기
로또 번호(1~45 사이의 중복 없는 6개 숫자)를 생성하는 다양한 방법을 소개합니다.
1. Set을 이용한 중복 없는 로또 번호 생성 (기본 방법)
Set을 사용하면 중복을 자동으로 제거할 수 있어 로또 번호 생성에 적합합니다.
import java.util.HashSet; import java.util.Random; import java.util.Set; public class LottoGenerator { public static void main(String[] args) { Random random = new Random(); Set<Integer> lottoNumbers = new HashSet<>(); while (lottoNumbers.size() < 6) { lottoNumbers.add(random.nextInt(45) + 1); // 1~45 사이의 난수 생성 } System.out.println("로또 번호: " + lottoNumbers); } }
출력 예시
로또 번호: [12, 45, 7, 23, 34, 29]
설명
- HashSet<Integer>를 사용하여 중복 없이 6개의 숫자를 저장.
- random.nextInt(45) + 1 → 1~45 범위의 난수를 생성.
- while 루프를 돌면서 Set에 6개 숫자가 모일 때까지 반복.
2. List와 Collections.shuffle()을 이용한 로또 번호 생성 (랜덤 섞기)
import java.util.ArrayList; import java.util.Collections; import java.util.List; public class LottoShuffle { public static void main(String[] args) { List<Integer> numbers = new ArrayList<>(); // 1~45까지 숫자 리스트 생성 for (int i = 1; i <= 45; i++) { numbers.add(i); } // 리스트 섞기 Collections.shuffle(numbers); // 앞에서 6개 숫자 선택 List<Integer> lottoNumbers = numbers.subList(0, 6); System.out.println("로또 번호: " + lottoNumbers); } }
출력 예시
로또 번호: [3, 25, 42, 19, 8, 33]
설명
- 1~45까지 숫자를 리스트에 추가.
- Collections.shuffle(numbers)를 이용해 리스트를 랜덤하게 섞음.
- subList(0, 6)를 사용해 처음 6개의 숫자 선택.
3. TreeSet을 이용한 정렬된 로또 번호 생성
import java.util.Random; import java.util.Set; import java.util.TreeSet; public class LottoSorted { public static void main(String[] args) { Random random = new Random(); Set<Integer> lottoNumbers = new TreeSet<>(); // 자동 정렬되는 Set while (lottoNumbers.size() < 6) { lottoNumbers.add(random.nextInt(45) + 1); } System.out.println("정렬된 로또 번호: " + lottoNumbers); } }
출력 예시
정렬된 로또 번호: [3, 15, 22, 28, 34, 40]
설명
- TreeSet을 사용하면 자동으로 번호가 정렬됨.
- HashSet과 동일하게 중복을 자동으로 방지.
4. Java 8+ Stream API를 이용한 로또 번호 생성
import java.util.List; import java.util.Random; import java.util.stream.Collectors; public class LottoStream { public static void main(String[] args) { List<Integer> lottoNumbers = new Random() .ints(1, 46) // 1~45 사이의 무한 스트림 생성 .distinct() // 중복 제거 .limit(6) // 6개만 선택 .sorted() // 정렬 .boxed() // int -> Integer 변환 .collect(Collectors.toList()); System.out.println("Stream 로또 번호: " + lottoNumbers); } }
출력 예시
Stream 로또 번호: [5, 12, 23, 27, 38, 41]
설명
- ints(1, 46) → 1~45 범위의 난수 스트림 생성.
- .distinct() → 중복 제거.
- .limit(6) → 6개만 선택.
- .sorted() → 오름차순 정렬.
- .boxed() → int를 Integer로 변환.
- .collect(Collectors.toList()) → 리스트로 변환.
5. SecureRandom을 이용한 보안성이 높은 로또 번호 생성
import java.security.SecureRandom; import java.util.Set; import java.util.TreeSet; public class SecureLotto { public static void main(String[] args) { SecureRandom secureRandom = new SecureRandom(); Set<Integer> lottoNumbers = new TreeSet<>(); while (lottoNumbers.size() < 6) { lottoNumbers.add(secureRandom.nextInt(45) + 1); } System.out.println("보안 로또 번호: " + lottoNumbers); } }
출력 예시
보안 로또 번호: [4, 13, 22, 29, 37, 42]
설명
- SecureRandom은 일반 Random보다 예측 불가능한 난수를 생성.
- 보안이 중요한 경우(예: 복권 시스템, 암호화 키 생성) 사용.
반응형
'IT > Java' 카테고리의 다른 글
[Java] 랜덤 문자열 생성하기 (0) | 2025.03.21 |
---|---|
[Java] 중복되지 않는 난수 생성하기 (0) | 2025.03.20 |
[Java] 4자리 수 난수 생성하기 (0) | 2025.03.19 |
[Java] Random 클래스의 시드(Seed)란 (0) | 2025.03.18 |
[Java] Random 클래스 주요 메소드 및 사용법 (0) | 2025.03.17 |