기타 강좌

난수를 사용하기 위해서는

 

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 886
파이널컷X 파컷 강좌 목록 아방스 2017.06.18 757
웹디자인 관련 웹 디자인 무료 버튼 템플릿! - Clean E-Commerce Web Buttons file 아방스 2011.12.07 2166
웹디자인 관련 웹 디자인 무료 버튼 템플릿! - Download Button file 아방스 2011.12.07 2321
웹디자인 관련 웹 디자인 무료 버튼 템플릿! - Download The Source Files Button file 아방스 2011.12.07 2752
웹디자인 관련 웹 디자인 무료 버튼 템플릿! - Green App Store Button file 아방스 2011.12.07 2888
웹디자인 관련 웹 디자인 무료 버튼 템플릿! - Light to Dark Web Buttons file 아방스 2011.12.07 2759
웹디자인 관련 웹 디자인 무료 버튼 템플릿! - Pink Vibrant “Call To Action” file 아방스 2011.12.07 2894
웹디자인 관련 웹 디자인 무료 버튼 템플릿! - PSD Download Buttons file 아방스 2011.12.07 3279
웹디자인 관련 웹 디자인 무료 버튼 템플릿! - Red Download Button file 아방스 2011.12.07 2829
웹디자인 관련 웹 디자인 무료 버튼 템플릿! - Sexy Green Download Button file 아방스 2011.12.07 2993
웹디자인 관련 웹 디자인 무료 버튼 템플릿! - Simple Download Buttons file 아방스 2011.12.07 2969
웹디자인 관련 웹 디자인 무료 버튼 템플릿! - Sticky 3D Buttons file 아방스 2011.12.07 3024
웹디자인 관련 웹 디자인 무료 버튼 템플릿! - Web 2.0 Download Buttons file 아방스 2011.12.07 3575
웹디자인 관련 웹 디자인 무료 버튼 템플릿! - Web Buttons Vector Graphic file 아방스 2011.12.07 3251
웹디자인 관련 웹 디자인 무료 버튼 템플릿! - Wide Green Button file 아방스 2011.12.07 3526
웹디자인 관련 웹 디자인 무료 버튼 템플릿! - “Call To Action” Button file 아방스 2011.12.07 2015
웹디자인 관련 웹 디자인 무료 버튼 템플릿! - “Call To Action” Buttons file 아방스 2011.12.07 1750
웹디자인 관련 웹 디자인 무료 버튼 템플릿! -Bright 3D Buttons file 아방스 2011.12.07 1380
기타 윈도우 XP에서 16비트 도스가 실행이 안될때 스크립트 2008.07.25 3567
기타 윈도우 게임을 휴대폰이나 태블릿으로 돌려보자 폰으로컴퓨터하기 2014.01.21 1428
기타 유튜브 동영상 다운로드 하기 6 아방스 2010.11.03 2499
Board Pagination Prev 1 ... 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Next
/ 19