인프런 커뮤니티 질문&답변

킴주니님의 프로필 이미지
킴주니

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

로또 번호 생성기

로또번호 질문

작성

·

117

·

수정됨

0

강의영상 21:47분쯤에 이미 찾은 값이라고해서 number[i] == randvalue랑 비교하는 조건식이 있는데요 현재 number배열에는 아무것도 들어가있지 않은 상태아닌가요? 코드를 쭉 봤는데 랜덤수를 넣어주는 곳이 없어서 도대체 무엇이랑 비교를 하는건가요??다른 부분은 다 이해되는데 지금 로또번호가 이해가 안됩니다.. ㅠ

 

그리고 하나더 int randomvalue = 1 + (rand() % 45); 를해서

이 randomvalue를 number[i]에 for문으로 6번넣어서 출력을 할려했는데(중복 생각안하고)

근데 출력이 안됩니다 이게 계속 그래서 뭐가 문젠지 몰라서 제가 변수를 지우고 그냥 number[i]에

number[i] = 1 + (rand() % 45);를 직접적으로 대입해주니 출력이 잘 됐습니다 혹시 그 이유를 여쭤봐도 될까요??

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

님의 질문에 대해 답변드리겠습니다.

첫 번째 질문에 대해, number[i] == randvalue 조건식은 배열 number 내에 이미 존재하는 값과 새로 생성된 랜덤 값 randvalue가 동일한지 비교하는 로직입니다. 현재 number 배열이 비어 있다면, 이 조건식은 단순히 초기 상태를 확인하는 것일 수 있습니다. 그러나, 보통 이러한 로직은 랜덤한 값이 배열에 이미 존재하는지 중복 체크를 위해 사용됩니다. 질문에서 언급하신 코드 상황만으로는 랜덤 수를 number 배열에 어떻게 추가하는지 구체적인 부분이 나와있지 않아, 랜덤 수를 추가하는 과정이 빠진 것 같습니다. 반복문 내에서 랜덤한 값을 생성하고 배열에 추가하는 로직이 필요할 것으로 보입니다.

두 번째 질문의 경우, int randomvalue = 1 + (rand() % 45);로 랜덤 값을 생성한 후 이 값을 number[i]에 할당하는 과정에서 문제가 발생한 것으로 보입니다. 하나의 randomvalue를 생성하고 이를 여러 번 number[i]에 할당하려 했다면, for 문을 사용하여 배열의 각 요소에 같은 값이 할당되었을 겁니다. 이로 인해 중복된 값이 생성되어 출력이 예상과 다를 수 있습니다. 반면 number[i] = 1 + (rand() % 45);를 사용하여 배열의 각 요소에 직접 랜덤 값을 할당하게 되면, 반복문의 각 단계에서 새로운 랜덤 값이 생성되어 number 배열의 각 요소에 다른 값이 할당됩니다. 이 차이로 인해 후자의 방식이 원하시는 결과를 얻는 데 성공한 것으로 보입니다.

혹시라도 더 궁금한 점이 있으시다면 추가적인 질문을 주시면 감사하겠습니다.

킴주니님의 프로필 이미지
킴주니

작성한 질문수

질문하기