#15 C언어 [도전! 프로그래밍3/4번] srand 여러번 쓰면 안되는 이유

2022. 8. 2. 18:18·기타/지식

 

우선 코드 먼저

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main(){
    
    int i=0,random=0;
    srand((int)time(NULL)); //현재시간 사용해서 시드설정

    while(i<3)
    {
        

        random= rand()%6+1; //난수를 random에 임의할당
        //난수의 범위는 0~5에서 0+1~5+1 즉 1~6입니다
        
        printf("주사위 %d의 결과 %d\n",i,random);
        i++;
    }
    

    return 0;
}
 

처음 코딩을 했을때 저는 while 안에 srand((int)time(NULL)을 넣었고 while문이 돌아가면서 srand가 계속해서 새로 설정되어야 새로운 난수가 생긴다고 생각했었습니다. 그런데 srand에 대해서 검색해본 결과 

 

 

  1. time 함수의 기준은 1초라는 것
  2. srand를 이용하여 seed값을 변경하면 추출 순서가 초기화 된다는 것

 

 

을 간과하였습니다. while문 안에 srand를 넣는다면 while이 반복되는 시간이 1초 안이기에 새로운 시간이 할당되지 않았습니다. 즉 0.1초만에 while이 여러번 돌아가기에 srand가 씨드로 계속 같은 값을 가진다는 것입니다. 또한 srand를 이용하여 씨드값을 변경하였지만 변경값이 같음으로 추출 순서가 같은 씨드값을 기준으로 초기화 되었기에 계속해서 같은 숫자가 반복되었습니다. 

 

 

0을 씨드값으로 4 9 10 14 와 같이 난수가 발생하고, 1을 씨드값으로 49 23 59 20와 같이 난수가 발생한다고 한다면 제가 위에서 짠 while문 밖에 srand를 넣은 코드는 0을 씨드값으로 첫번째인 4 출력 -> 두번째인 9를 출력 한 것이고 while문 안에 srand를 넣는다면 0을 씨드값으로 첫번째인 4를 출력 -> 시간이 바뀌지 않았음으로 다시 0을 씨드값으로 초기화 -> 추출순서가 초기화 되어 다시 0을 씨드값으로 첫번째인 4를 출력 하게 된 것입니다.

 

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'기타 > 지식' 카테고리의 다른 글

[지옥에서온git] 깃허브 저장소로 push할때 발생하는 비밀번호 틀렸다고 나오는 에러, failed to push some refs 에러  (0) 2022.08.03
[지옥에서온git] 맥에 kdiif3 설치하는 법  (0) 2022.08.02
#14 C언어 반복문과 조건문에서의 break; continue; return;의 차이점  (0) 2022.08.02
#13 C언어 변수형태/상수형태 배열과 포인터의 차이점과 공통점  (0) 2022.08.02
[지옥에서온git] branch를 다루는 연습 중 merge conflict  (0) 2022.08.02
'기타/지식' 카테고리의 다른 글
  • [지옥에서온git] 깃허브 저장소로 push할때 발생하는 비밀번호 틀렸다고 나오는 에러, failed to push some refs 에러
  • [지옥에서온git] 맥에 kdiif3 설치하는 법
  • #14 C언어 반복문과 조건문에서의 break; continue; return;의 차이점
  • #13 C언어 변수형태/상수형태 배열과 포인터의 차이점과 공통점
반달bear
반달bear
꾸준히 성실하게 걷고 싶습니다. 지속 가능한 열정을 추구합니다.
  • 반달bear
    반달곰의 개발이야기
    반달bear
  • 전체
    오늘
    어제
    • 분류 전체보기 (107)
      • 개발지식 (35)
        • Spring (2)
        • Java (2)
        • DB (1)
        • Design Pattern (8)
        • CS (1)
        • Ops (12)
        • AI (8)
      • 기타 (72)
        • 일기 (5)
        • 지식 (67)
      • 일기장 (0)
  • 블로그 메뉴

    • 홈
  • 링크

    • 반달곰 Gihub
  • 공지사항

  • 인기 글

  • 태그

    실험
    java
    소회
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
반달bear
#15 C언어 [도전! 프로그래밍3/4번] srand 여러번 쓰면 안되는 이유
상단으로

티스토리툴바