티스토리 뷰

C

랜덤함수

parkrams 2024. 2. 7. 10:21
728x90

난수 = 랜덤 ( random value )

  • 미리 정해져 있는 값이 아닌 임의로 생성 된 값
    • 임의로 생성된 값을 가지고 특정 기능이나 모델을 검증하는 등의 다양한 형태로 활용 가능
  • 라이브러리 추가
    • <stdlib.h>
    • <time.h>
  • c 언어에서 rand() 함수로 랜덤함수를 실행 가능하다
    • 하지만 한번 실행된 값이 변경 되진 않는다
    • srand()로 시드를 지속적으로 변경 해줘야 함.
    • 매번 새로운 값을 넣어 주기 위해 srand()에 시간을 넣어 준다.
#include <stdio.h>
#include <stdlib.h>   <---  랜덤 함수를 사용하기 위한 라이브러리
#include <time.h>     <---  진정한 랜덤함수를 만들기 위해 시간 라이브러리 추가 

int main(void) {


    // 프로그램을 실행할 때 마다 같은 값이 저장 됨

    // srand() --> rand 함수가 가지는 재료 값을 바꿔줌  ( 시드 변경 ) 

    // 하지만 이도 값을 주기적으로 바꿔주는게 아니다.. srand 에 주기적으로 새로운 값을 넣어줘야할 필요가 있음
    // 이를 쉽게 해결하는 방법 시간으로 처리 

    unsigned int ctime  = time(NULL); // 

    printf("%d\n", ctime);
    srand(ctime);

    printf("%d\n", rand());
    printf("%d\n", rand());
    printf("%d\n", rand());

    return 0;
}

중복 없는 로또 게임

    // 입력 받은 게임 수 만큼 6개 번호 추출 로또 출력
    // 중복 제거 추가 

    int gameCount;
    int gameCountArray[6];

    unsigned int sTime = time(NULL);

    srand(sTime);

    printf("게임 수를 입력하세요(1~10) : ");
    scanf_s("%d", &gameCount);



    for (int i = 1; i <= gameCount; i++) {

        for (int j = 0; j <= 5; j++) {
            gameCountArray[j] = (rand() % 45) + 1;    //  랜덤 번호 입력 
            for (int k = 0; k < j; k++) {
                if (gameCountArray[j] == gameCountArray[k]) { // 중복 번호가 있다면 j를 감소 시켜 다시 뽑기
                    j--;        // 중복 값을 다시 받기 위해  j 감소 
                    break;    // 중복 발견하면 더 이상 반복필요 없으므로 종료하고 for int j 로 복귀 해서 다시 난수 생성
                }
            }
        }

        printf("%d번 게임 : ", i);  // 입력 받은 수만큼 게임 실행

        for (int k = 0; k <= 5; k++) {
            printf("%d ", gameCountArray[k]);
        }
        printf("\n");

    }
  • 바보 같이 for (int k = 0; k < j; k++) { 이 부분에서 삽질을 했는데..
    • 처음에 길이에 숫자를 입력함.. 그렇게 되면 무조건 0부터 시작 해서 if 문 조건에 무조건 걸려서 무한루프 되는 경우 발생.. 이걸 이해를 못하는 바보 같은 실수를 함... 조건문을 j로 하면 if문 조건인 0 == 0번지 주소를 조사하게 되는 경우가 없음..
728x90

'C' 카테고리의 다른 글

문자열 함수  (0) 2024.02.10
Micorosoft Visual Studio 단축키 설정  (0) 2024.02.08
문자열 , 문자열 포인터  (0) 2024.02.02
함수포인터2 좀 더 상세 포인터 배열 조금 더  (0) 2024.02.01
포인터와 함수, 포인터 배열  (1) 2024.01.30
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함