JAVA

난수 중복 방지 알고리즘 - 2

jmeen 2021. 8. 16. 10:51
728x90

 

중복값 판단 알고리즘 (tistory.com)

 

 

중복값 판단 알고리즘

예전 로또번호 생성기 할때와 같은것인데, 로또는 전체 수중 같은것이 있으면 안되는것이고, 이번엔 바로 전수이다. 물론 같은 맥락으로 로또번호도 같은 문법으로 고칠수 있을것 같다. 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);
		}