#로또 번호 생성기
## CODE <a class='btn btn-default' href='/codes/11261'>Link</a>
```
import java.util.ArrayList;
import java.util.Random;
public class Lotto {
public static void main(String[] args) {
// 객체 생성
LottoMachine machine = new LottoMachine();
// 번호 생성
int[] arr = machine.generate();
// 결과 출력
System.out.print("생성 번호: ");
for (int i = 0; i < arr.length; i++) {
System.out.printf("%d ", arr[i]);
}
}
}
class LottoMachine {
// 필드
private ArrayList<Integer> numbers;
// 생성자
public LottoMachine() {
numbers = new ArrayList<Integer>();
/* 1. 번호(1 ~ 45)를 추가하세요. */
for(int i = 0; i < 46; i++) {
numbers.add(i);
}
}
// 메소드
public int[] generate() {
int[] pickedNumbers = new int[6];
Random rand = new Random();
/* 2. 임의의 숫자 6개를 추출하세요. */
for(int i = 0; i < pickedNumbers.length; i++) {
pickedNumbers[i] = numbers.remove(rand.nextInt(numbers.size()));
}
return pickedNumbers;
}
}
```
## INPUT
```
```
## OUPUT
```
생성 번호: 21 40 44 36 14 26
```
pickedNumbers[i] = numbers.remove(rand.nextInt(numbers.size()));
이 부분 질문드립니다.
numbers.remove는 해당 부분의 값을 제거하는건데 numbers.remove(rand.nextInt(numbers.size()))을 실행 후 만약 20이라는 숫자가 나와서 pickedNumbers[i]에 대입되면서 제거되는건가요 ?
이렇게 하면 중복을 번호 생성이 방지 되는게 맞나요 ?
sehongpark님의 답변
# 네, 맞습니다.
정확히 이해하고 계시네요~ Good!