728x90
예전 로또번호 생성기 할때와 같은것인데, 로또는 전체 수중 같은것이 있으면 안되는것이고, 이번엔 바로 전수이다.
물론 같은 맥락으로 로또번호도 같은 문법으로 고칠수 있을것 같다.
1. 예전에 배워서 썻던 코드.
-- for문이 일단 돈다.
-- nums[i] 값이 nums[i-1] 값과 같으면 i를 전단계로 돌려서 다시 한번 실행하게끔 하는 방법이다.
-- i값이 2이상이 되어야 된다.
for (int i = 0; i < nums.length; i++) {
nums[i] = 1 + rand.nextInt(10);
if (i > 1 && nums[i - 1] == nums[i]) {
i--;
continue;
}
}
2. 교재에서 알려준 코드.
- num[0]에 먼저 값을 대입한다.
- 그리고 나서 반복문을 돌리는데, 안에 do-while문이 있다.
- 만약 전것과 같으면, do-while문 반복
nums[0]= 1 + rand.nextInt(10);
for (int i = 1; i < nums.length; i++) {
do {
nums[i] = 1 + rand.nextInt(10);
} while (nums[i] == nums[i - 1]);
}
두 방식 모두 결과값은 잘 나온다.
둘다 알고 있으면 언젠가 도움이 될 것 같다.
전체 수에서 중복값 방지는 다음 포스팅을 참고하자.
'JAVA' 카테고리의 다른 글
JAVA 시프트연산자 (0) | 2021.08.19 |
---|---|
난수 중복 방지 알고리즘 - 2 (0) | 2021.08.16 |
알쏭달쏭자바200제 : 읽은 갯수만큼 별찍기 (0) | 2021.08.14 |
Servlet & JSP (0) | 2021.08.11 |
Java Network and Thread (0) | 2021.08.11 |