기타 강좌

난수를 사용하기 위해서는

 

srand(( unsigned )time(NULL);

을 해주시면 됩니다. 하는건 자기 마음이겠죠? unsigned int 이렇게 사용하셔도 됩니다.

이렇게 해주셨으면 난수 발생의 범위를 지정해야합니다.

 

난수 발생의 범위를 지정하는 방법은 이렇습니다.


변수 = rand() % (종료 값 - 시작 값 + 1) + 시작 값

100부터 1000 사이의 난수를 발생시키려면
변수 = rand() % (1000 - 100 + 1) + 100
간단히 하면
변수 = rand() % (901) + 100
이렇게 되지요.

 



이건 난수 1,000개를 발생시켜서 최소값, 최대값 출력하는 소스.

  1. #include <stdio.h>  
  2. #include <stdlib.h>  
  3. #include <conio.h>  
  4. #include <time.h>  
  5. int main()  
  6. {  
  7.      int a;  
  8.      int start,end;  
  9.      int max,min;  
  10.      int count;  
  11.        
  12.      srand((unsigned)time(NULL));  
  13.        
  14.      printf("시작 : ");  
  15.      scanf("%d",&start);  
  16.      printf("종료 : ");  
  17.      scanf("%d",&end);  
  18.        
  19.      min=end;  
  20.      max=start;  
  21.        
  22.      for(count=0;count<1000;count++)  
  23.      {  
  24.           a=rand() % (end - start + 1) + start;  
  25.           printf("%4d ",a);  
  26.             
  27.           if(min > a)  
  28.                  min=a;  
  29.           if(max < a)  
  30.                  max=a;  
  31.      }  
  32.        
  33.      printf("n최소 : %d",min);  
  34.      printf("n최대 : %d",max);  
  35.        
  36.      getch();  
  37.      return 0;  
  38. }  
Comment '2'
  • ?
    곤네꼬 2009.01.28 18:51

    저는 100부터 1000까지시 rand()%100+1000 으로 배웟습니다. << 정확하지않음

    그리고 unsigned 가 아닌 unsigned int으로 배웟는데요. << srand(unsigned int)time(NULL)); << 이거 아닌가요?
    제가 틀렷나요?

  • ?
    Last H 2009.02.14 19:37
    음 매우 지난 뒤의 답변이지만 님이 첫번째 쓰신 형태로도 사용합니다만
    그렇게 사용할 시 진정한 의미에서의 랜덤숫자가 성립되지 않습니다.
    난수라지만 일정 패턴을 가져버리죠 즉 저렇게 프로그램을 돌리면 숫자가
    (190,420,145)  <-- 이런식으로 무작위로 나온다고 치면
     다음에 프로그램을 틀어도 (190,420,145) 로 나옵니다. 즉 패턴을 유지하죠
    그래서 이 강좌에서 처럼 주로 타임함수를 호출해서 타이머를 사용합니다. 이때 PC의 타이머 클럭은 CPU속도에 준하기 때문에
    요새 컴퓨터로 약 3기가의 CPU속도라면 같은 패턴을 지는 난수가 나올 확률은 한없이 0에 가깝게 되죠.
    p.s 3기가라면 1초에 3x10^9번의 주기를 갖는 다는겁니다.

    두번째로 unsigned int 라는건 unsigned와는 다른 겁니다 이미 unsigned라는 문장 자체는 일종의
    명령어입니다. 뜻은 간단히 말해 자연수만 받겠다는거죠 즉
    음수를 처리하지 않겟다는 의미입니다. 과거엔 RAM의 사양상 unsigned int를 통해 자연수를 더욱 큰 수까지 입력 받으려고
    주로 사용하였으나 최근엔 일반 프로그래밍에선 그다지 따지지 않습니다. 램이 차고 넘치거든요.
    각종 페이징 기법같은 메모리 관리 방식도 발전해서 효율도 높아졌고요.
    물론 임베디드 관련으로 쓰일땐 자료구조적으로 가장 효율적으로 할 수록 더 작은 기계에 더 많은 기능을 집어 넣을 수 있기때문에
    중요하지만요.

List of Articles
분류 제목 글쓴이 날짜 조회 수
Vegas Pro 베가스 강좌 목록 아방스 2017.09.28 913
파이널컷X 파컷 강좌 목록 아방스 2017.06.18 803
웹디자인 관련 웹 디자인 무료 버튼 템플릿! - New Download Button file 아방스 2011.12.07 2992
메이킹 영상 완좌의 게임 시즌4 VFC 메이킹 릴 아방스 2014.07.09 873
기타 온라인 게임 서버의 구조도 4 file Saber 2010.09.06 2509
기타 오류해결법 2-비스타로 알피지 만들기 XP게임하기 3 21thcentuary 2008.09.29 3324
기타 오류해결법 1-비스타로 하나포스에서 게임 다운로드하기. 21thcentuary 2008.09.29 2413
에프터 이펙트 에픽 플러그인 키젠에 대한 간단한 팁 ^^ 아방스 2010.06.09 3982
플러그인 에펙.프리미어 플러그인 RedGiant.KnollLightFactoryPro v2.5.2 1 file 아방스 2010.03.23 5907
플러그인 에펙 플러그인 Zaxwerks 5가지 최신버젼 아방스 2010.03.23 5903
에프터 이펙트 에펙 단축키 깔끔한정리~ ^^ file 아방스 2012.09.13 6663
에프터 이펙트 에펙 글자 등장 효과 - Create a Stormy, Electric Type Reveal 3 file 아방스 2013.07.05 4673
에프터 이펙트 에펙 aec 파일 불러오기 오류 'After Effects error : Failed to connect to Adobe Premiere Pro Dynamic Link. (86 :: 1) file 아방스 2016.07.13 5980
기타 에러 메세지를 텍스트로 복사하기 1 file 값싼뭉크 2014.04.26 875
에프터 이펙트 애팩 키보드 단축키 (after effects cs5) 아방스 2011.12.15 5170
기타 알집으로 게임 압축하기 6 아방스 2008.02.25 2386
C언어 알았습니다..그럼 게시물은 다 삭제해버리겠습니다.. 8 제니스 2009.06.16 2278
기타 악축파일 압축해제 방법 설명 4 아방스 2011.01.21 2053
기타 아이디어를 얻고싶다면 ! 나열하고 선택해라 3 file 꼴뚜기무침 2010.11.13 2435
기타 아방스 분들 사과드립니다.... 12 제네시스& 2009.06.27 2307
기타 아르시아 공략1 10 ⌒_⌒ 2008.08.17 3140
C언어 시작의반 6 file 정체불명 2009.05.01 2172
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Next
/ 19