반응형
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
- 문자열
- IntelliJ
- vscode
- json
- 자바
- Eclipse
- Array
- windows
- Java
- Visual Studio Code
- input
- Maven
- 정규식
- javascript
- Button
- 배열
- 이탈리아
- CMD
- ArrayList
- 자바스크립트
- 이클립스
- string
- date
- table
- 인텔리제이
- 테이블
- html
- js
- list
- CSS
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 |
Comments