JAVA
난수 중복 방지 알고리즘 - 2
jmeen
2021. 8. 16. 10:51
728x90
중복값 판단 알고리즘
예전 로또번호 생성기 할때와 같은것인데, 로또는 전체 수중 같은것이 있으면 안되는것이고, 이번엔 바로 전수이다. 물론 같은 맥락으로 로또번호도 같은 문법으로 고칠수 있을것 같다. 1. 예전
jaemin-lim.tistory.com
바로 직전에 한 알고리즘은 바로 전 값과 중복체크를 하는 방법이었다.
로또번호같이 전체 값과 비교하는것이 바로 다음단계엿다.
마찬가지로 내가 짠것과 교재의 방법을 비교하며 하나 더 배워가자.
1. 내가 생각한 방법
- 기존 방법과 동일하다.
- 기존값과 비교하는 반복문을 한번 더 돌리고, 중복값이면 i번째를 다시 하게끔 숫자를 내렸다.
for (int i = 0; i < nums.length; i++) {
nums[i] = 1 + rand.nextInt(10);
for (int j = 0; j < i; j++) {
if (i > 1 && nums[j] == nums[i]) {
i--;
break;
}
}
}
2. 교재의 방법
-- 전단계와 마찬가지로 do-while문을 활용했다.
-- 비교하고 반복문을 탈출하는 방식이 새로운 방식이다.
-- j 값이 1씩 증가하게 되고, j와 i값이 같아지면 루프를 탈출하는 방법이다.
for (int i = 0; i < nums.length; i++) {
int j = 0;
do {
nums[i] = 1 + rand.nextInt(10);
for (; j < i; j++) {
if (nums[j] == nums[i]) {
break;
}
}
} while (j < i);
}