2. ·£´ý ÇÔ¼ö

ÁÖ»çÀ§¸¦ ´øÁö¸é 1ÀÇ ´«¿¡¼­ºÎÅÍ 6ÀÇ ´«±îÁö 6°³ÀÇ ´« Áß Çϳª°¡ ¾Æ¹«·¸°Ô³ª ³ª¿É´Ï´Ù. ÁÖ»çÀ§¸¦ ´øÁú ¶§¸¶´Ù ¾î¶² ´«ÀÌ ³ª¿ÃÁö´Â ´øÁö´Â »ç¶÷µµ ¸ð¸£°í ±×°ÍÀ» °üÂûÇÏ´Â »ç¶÷µµ ¸ð¸¨´Ï´Ù. ¶Ç ³ª¿À´Â ´«¿¡´Â ±× ¾î¶² ±ÔÄ¢µµ ¾ø½À´Ï´Ù. ÀÌ·¸°Ô ÁÖ»çÀ§ÀÇ ´«ÀÇ ¼öó·³ ³ª¿À´Â ¼ö¸¦ ¡º³­¼ö(Ñêâ¦, random number)¡» ¶ó°í ÇÕ´Ï´Ù.

 

±×·¯¸é ÄÄÇ»ÅÍ¿¡¼­´Â ÀÌ ³­¼ö¸¦ ¾î¶»°Ô ¸¸µé±î¿ä? °á·ÐºÎÅÍ ¸»Çϸé ÄÄÇ»ÅÍ´Â 0°ú 1·Î¸¸ ó¸®ÇÏ´Â ±â°èÀ̹ǷΠ¿øÄ¢ÀûÀ¸·Î´Â ³­¼ö¸¦ ¸¸µé¾î ³¾ ¼ö ¾ø½À´Ï´Ù. ´ÜÁö ¿ì¸®°¡ ³­¼öÀΰÍó·³ ´À³¢µµ·Ï ¼ö¸¦ ¸¸µé¾î ³¾ »ÓÀÔ´Ï´Ù. °á±¹ ÄÄÇ»ÅÍ¿¡¼­ ³­¼ö¶õ ÀÏÁ¤ÇÑ ¹è¿­ ¼ø¼­³ª ±ÔÄ¢À» °®Áö ¾Ê´Â ¿¬¼ÓÀûÀÎ ÀÓÀÇÀÇ ¼ö(pseudo-random number)¸¦ ¸»ÇÕ´Ï´Ù. ¾î¶² ÇÁ·Î±×·¡¹Ö ¾ð¾îÀ̵çÁö ³­¼ö¸¦ ¹ß»ýÇÏ´Â ÇÔ¼ö´Â ±âº»ÀûÀ¸·Î °¡Áö°í ÀÖ½À´Ï´Ù.  

C¾ð¾î¿¡¼­´Â Ç¥ÁضóÀ̺귯¸® ÇÔ¼ö·Î rand()¿Í srand() ÇÔ¼ö¸¦ Á¦°øÇϴµ¥ ÀÌ ÇÔ¼öµéÀº <stdlib.h>¿¡ Á¤ÀǵǾî ÀÖ½À´Ï´Ù. srand()ÇÔ¼ö¿¡¼­ seed°ªÀ» ¸¸µé¾î ³»°í ±× seed°ªÀ» ¹ÙÅÁÀ¸·Î ÇÏ¿© rand() ÇÔ¼ö´Â 0¿¡¼­ºÎÅÍ 32,767±îÁöÀÇ Á¤¼ö¸¦ ÀÓÀÇ·Î ¹ß»ý½Ãŵ´Ï´Ù.

rand()´Â »ý¼º ÆÐÅÏÀ» Çϳª¸¦ ¼³Á¤ÇÏ´Â °ÍÀ̰í srand()´Â »ý¼º ÆÐÅÏÀ» ¿©·¯ °³ ¼³Á¤ÇÏ´Â °ÍÀÔ´Ï´Ù. srand()¸¦ »ç¿ëÇÏÁö ¾Ê´Â °æ¿ì¿¡´Â ±âº»ÀûÀ¸·Î srand(1)ÀÌ ¼³Á¤µË´Ï´Ù.

 

´ÙÀ½Àº 10°³ÀÇ ³­¼ö¸¦ ¹ß»ý½ÃŰ´Â ÇÁ·Î±×·¥ÀÔ´Ï´Ù.

 

¡¼¼Ò½º ÇÁ·Î±×·¥¡½

//File Name : ex095_random01.c

#include<stdio.h>

#include<stdlib.h>

 

int main(void){

  int randomNumber;

  int i;

  for (i=0;i<10;i++){

  randomNumber=rand();

  printf("%d\t",randomNumber);

  }

  printf("\n");

  return 0;

}

 

¡¼½ÇÇà °á°ú¡½

D:\Data\c>ex095_random01.exe

41      18467   6334    26500   19169   15724   11478   29358   26962   24464

D:\Data\c>rex095_random01.exe

41      18467   6334    26500   19169   15724   11478   29358   26962   24464

 

ù ¹øÂ° ½ÇÇà°ú µÎ ¹øÂ° ½ÇÇàÀÌ ±× °á°ú°¡ °°½À´Ï´Ù. ´ç¿¬È÷ ¿ì¸®°¡ ¿øÇÏ´Â °á°ú°¡ ¾Æ´ÏÁÒ? ¿ì¸®´Â ÇÁ·Î±×·¥À» ½ÇÇàÇÒ ¶§¸¶´Ù ´Ù¸¥ °á°ú¸¦ ¿øÇÏÁö ÇÁ·Î±×·¥À» ½ÇÇàÇÒ ¶§¸¶´Ù ¸Å¹ø °°Àº °ªÀÌ ³ª¿À´Â °ÍÀ» ¿øÇÏÁö ¾Ê½À´Ï´Ù.

 

¡¼¼Ò½º ÇÁ·Î±×·¥¡½

//File Name : ex095_random02.c

#include<stdio.h>

#include<stdlib.h>

 

int main(void){

  int randomNumber;

  int i;

  unsigned seedNumber;

  seedNumber=500;

  srand(seedNumber);

 

  for (i=0;i<10;i++){

   randomNumber=rand();

              printf("%d\t",randomNumber);

  }

  printf("\n");

  return 0;

}

 

À̸¦ ½ÇÇà½Ã۰í

¡¼½ÇÇà °á°ú¡½

D:\Data\c>gcc -o ex095_random02.exe   ex095_random02.c

D:\Data\c>ex095_random02.exe  

1671    7970    7660    8237    21566   9082    24495   10440   8709    4002

D:\Data\c>

 

seedNumber=500; ¸¦

seedNumber=53240; ·Î ¹Ù²Û ´ÙÀ½ ´Ù½Ã ÄÄÆÄÀÏ ÇÏ°í ½ÇÇà½ÃÄѺ¾½Ã´Ù.

 

¡¼½ÇÇà °á°ú¡½

D:\Data\c>gcc -o ex095_random02.exe   ex095_random02.c

D:\Data\c>ex095_random02.exe  

10058   25291   18527   2764    30653   11055   7481    28778   20381   27038

D:\Data\c>

 

±×·¯³ª ÀÌ °ÍÀ» ÀÌ·¸°Ô ÇÒ ¼ö´Â ¾ø½À´Ï´Ù. ³­¼ö¸¦ »ý¼ºÇÒ ¶§¸¶´Ù ÇÁ·Î±×·¥À» »õ·Î ¸¸µå´Â °ÍÀÌ´Ù. ÇϳªÀÇ ÇÁ·Î±×·¥À¸·Î Ç×»ó ´Ù¸¥ ³­¼ö¸¦ »ý¼ºÇϱâ À§Çؼ­´Â Seed °ªÀ» Ç×»ó ¹Ù²Ù¾îÁÖ¾î¾ß ÇÕ´Ï´Ù. ±×·¯¸é °¡Àå ½±°Ô »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀº ¹«¾ùÀϱî¿ä? ¿ì¸®°¡ ÄÄÇ»Å͸¦ »ç¿ëÇÏÁö ¾Ê°í ÀÖ´õ¶óµµ ´Ã ¹Ù²î´Â °ÍÀÌ Àִµ¥, ±×°ÍÀÌ ½Ã°£ÀÔ´Ï´Ù. µû¶ó¼­ ½Ã°£À» »ç¿ëÇÏ¿© seed°ªÀ» º¯°æ½ÃŰ¸é ¿øÇÏ´Â ³­¼ö°¡ ¹ß»ýÇÕ´Ï´Ù.

 

¡¼Çü½Ä¡½

#include<time.h>

º¯¼ö¸í=time(NULL);

 

¡¼¿¹Á¦¡½

#include<time.h>

seedNumber=time(NULL);

 

¸¦ »ç¿ëÇÏ¸é µË´Ï´Ù.

 

 

 

¡¼¼Ò½º ÇÁ·Î±×·¥¡½

//File Name : ex095_random03.c

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

 

int main(void){

  int randomNumber;

  int i;

  unsigned seedNumber;

 

  seedNumber=time(NULL);

  srand(seedNumber);

 

  for (i=0;i<10;i++){

  randomNumber=rand();

  printf("%d\t", randomNumber);

 

  }

  printf("\n");

  return 0;

}

 

 

 

 

¡¼½ÇÇà °á°ú¡½

D:\Data\c>ex095_random03

23165   14191   19287   7252    7278    14170   30620   7094    30968   23539

 

D:\Data\c>ex095_random03

23260   30983   13060   16961   11489   29741   22577   20507   18284   9085

 

 

[Á¤¸®]

³­¼ö¸¦ ¹ß»ýÇϱâ À§Çؼ­´Â ´ÙÀ½°ú °°ÀÌ ÄÚµùÇÏ¸é µË´Ï´Ù.

#include<stdlib.h>

#include<time.h>

srand(time(NULL);

rand();

 

 

´ÙÀ½Àº ÄÄÇ»ÅͰ¡ 0¿¡¼­ 99±îÁöÀÇ ÀÓÀÇÀÇ ¼ýÀÚ¸¦ ¸¸µé¾î ³»°í, »ç¶÷ÀÌ ±× ¼ýÀÚ¸¦ ¸ÂÃß´Â °ÔÀÓÀÔ´Ï´Ù. ÃÑ 7¹øÀÇ ±âȸ°¡ ÁÖ¾îÁö°í, »ç¿ëÀÚ´Â ¾î¶² ¼ö¸¦ ÀÔ·ÂÇÏ¿© ÄÄÇ»ÅÍ´Â ÀÔ·ÂÇÑ ¼öº¸´Ù Å« ¼öÀÎÁö ÀÛÀº ¼öÀÎÁö ºñ±³ÇÏ¿© ÈùÆ®°¡ ÁÖ°í, »ç¿ëÀÚ´Â À̸¦ ÂüÁ¶ÇÏ¿© ¼ýÀÚ¸¦ ÀÔ·ÂÇØ°¡¸ç ÀÓÀÇÀÇ ¼ýÀÚ¸¦ ¾Ë¾Æ ¸ÂÃß´Â ÇÁ·Î±×·¥ÀÔ´Ï´Ù.

 

 

0ºÎÅÍ 99±îÁöÀÇ ÀÓÀÇÀÇ ¼ýÀÚ »ý¼º

  unsigned long randomNum;

  srand((unsigned)time(NULL));

  randomNum = rand()%100; 

 

 

¡¼¼Ò½º ÇÁ·Î±×·¥¡½

// File Name : ex073_for03.c

#include <stdlib.h>

#include <stdio.h>

#include<time.h>

 

int main() {

  int i,in; 

  unsigned long okNum;

  srand((unsigned)time(NULL));

  okNum = rand()%100;

   

  printf("0ºÎÅÍ 99»çÀÌÀÇ ¼ýÀÚ¸¦ ¸ÂÃ纸¼¼¿ä...\n");

  for(i=1;i<=7;i++){

   printf("¼ýÀÚ¸¦ ÀÔ·ÂÇϼ¼¿ä -> ");

   scanf("%d",&in);

   if(in==okNum) {

        printf("Á¤´äÀÔ´Ï´Ù. (%d¹øÂ°)\n",i);

        break;

        }

        else if(in>okNum) printf("ÀÔ·ÂÇÑ ¼ö°¡ ´õ Å®´Ï´Ù.\n");

             else printf("ÀÔ·ÂÇÑ ¼ö°¡ ´õ ÀÛ½À´Ï´Ù.\n");

                 

         if(i==7) printf("°ÔÀÓÀÌ ³¡³µ½À´Ï´Ù.");

   }

  

  if(i>7)    printf("\nã°íÀÚ ÇÏ´Â ¼ö´Â %dÀÔ´Ï´Ù", okNum);

  return 0;

}

 

¡¼½ÇÇà °á°ú¡½

0ºÎÅÍ 99»çÀÌÀÇ ¼ýÀÚ¸¦ ¸ÂÃ纸¼¼¿ä...

¼ýÀÚ¸¦ ÀÔ·ÂÇϼ¼¿ä -> 67

ÀÔ·ÂÇÑ ¼ö°¡ ´õ Å®´Ï´Ù.

¼ýÀÚ¸¦ ÀÔ·ÂÇϼ¼¿ä -> 12

ÀÔ·ÂÇÑ ¼ö°¡ ´õ ÀÛ½À´Ï´Ù.

¼ýÀÚ¸¦ ÀÔ·ÂÇϼ¼¿ä -> 34

ÀÔ·ÂÇÑ ¼ö°¡ ´õ ÀÛ½À´Ï´Ù.

¼ýÀÚ¸¦ ÀÔ·ÂÇϼ¼¿ä -> 45

ÀÔ·ÂÇÑ ¼ö°¡ ´õ ÀÛ½À´Ï´Ù.

¼ýÀÚ¸¦ ÀÔ·ÂÇϼ¼¿ä -> 50

ÀÔ·ÂÇÑ ¼ö°¡ ´õ ÀÛ½À´Ï´Ù.

¼ýÀÚ¸¦ ÀÔ·ÂÇϼ¼¿ä -> 55

ÀÔ·ÂÇÑ ¼ö°¡ ´õ ÀÛ½À´Ï´Ù.

¼ýÀÚ¸¦ ÀÔ·ÂÇϼ¼¿ä -> 59

ÀÔ·ÂÇÑ ¼ö°¡ ´õ Å®´Ï´Ù.

°ÔÀÓÀÌ ³¡³µ½À´Ï´Ù.ã°íÀÚ ÇÏ´Â ¼ö´Â 56ÀÔ´Ï´Ù

 

 

rand()ÇÔ¼ö´Â ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÉ ¶§¸¶´Ù »õ·Î¿î ³­¼ö¸¦ ¹ß»ý½ÃŰ´Â °ÍÀ̸ç rand()%100 Àº ¹ß»ýµÈ ³­¼ö¸¦ 100À¸·Î ³ª´« ³ª¸ÓÁöÀÔ´Ï´Ù. µû¶ó¼­ 0ºÎÅÍ 99±îÁöÀÇ ³­¼ö°¡ ¹ß»ýµÇ´Â °ÍÀÔ´Ï´Ù.

 

¸¸¾à¿¡ ÁÖ»çÀ§ÀÇ ´«À» ¸¸µé¾î ³»·Á¸é ¾î¶»°Ô ÇÒ±î¿ä?

ÁÖ»çÀ§´Â 1¿¡¼­ 6±îÁö ³ª¿À¹Ç·Î À̸¦ ¸¸µé¾î ³»·Á¸é 6À¸·Î ³ª´« ³ª¸ÓÁö¸¦ ¾òÀ¸¸é 0¿¡¼­ 5±îÁö ³ª¿À¹Ç·Î ¿©±â¿¡ 1À» ´õÇÏ¸é µË´Ï´Ù. Áï,

 

rand() % 6 + 1;

 

À» »ç¿ëÇϸé 1¿¡¼­ 6±îÁöÀÇ ¼ö°¡ ·£´ýÀ¸·Î ³ª¿É´Ï´Ù. ¹°·Ð % ¿¬»êÀÚ°¡ + ¿¬»êÀÚ º¸´Ù ¿ì¼±¼øÀ§°¡ ³ôÀ¸¹Ç·Î (rand() % 6) + 1;  À¸·Î ÇÏÁö ¾Ê¾Æµµ µË´Ï´Ù.

 

¿¹Á¦ ÇÁ·Î±×·¥

ÁÖ»çÀ§¸¦ 600¹ø ´øÁ® ³ª¿À´Â ´«(ÇÑ ÁÙ¿¡ 20°³)°ú °¢ ´«ÀÇ °³¼ö¸¦ ´ÙÀ½°ú °°ÀÌ Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ¿© º¾½Ã´Ù.

 

¡¼½ÇÇà °á°ú¡½

3 2 3 4 2 6 2 2 1 5 1 1 4 2 4 3 5 2 4 2

4 2 5 4 2 1 4 6 5 1 2 1 2 4 5 5 6 6 4 1

.......................................

5 6 4 2 4 6 2 4 3 3 2 1 5 2 2 6 4 4 2 1

 

1ÀÇ ´«ÀÌ ³ª¿Â Ƚ¼ö= 106

2ÀÇ ´«ÀÌ ³ª¿Â Ƚ¼ö= 103

3ÀÇ ´«ÀÌ ³ª¿Â Ƚ¼ö= 94

4ÀÇ ´«ÀÌ ³ª¿Â Ƚ¼ö= 113

5ÀÇ ´«ÀÌ ³ª¿Â Ƚ¼ö= 92

6ÀÇ ´«ÀÌ ³ª¿Â Ƚ¼ö= 92

 

 

¡¼¼Ò½º ÇÁ·Î±×·¥¡½

//File Name : ex0110_rand_03.c

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

 

int main(void){

  long i, seed, result, count=1;

  long counter1=0, counter2=0,counter3=0, counter4=0, counter5=0, counter6=0;

 

  seed=time(NULL);

  srand(seed);

 

  for(i=1;i<=600;i++){

        result=rand() % 6 +1 ;

        printf("%2d", result);

 

        if (count % 20 ==0) printf("\n");

        count++;

 

   switch (result){

             case 1: counter1++; break;

             case 2: counter2++; break;

             case 3: counter3++; break;

             case 4: counter4++; break;

             case 5: counter5++; break;

             case 6: counter6++; break;

   }

  }

   printf("\n");

  printf("1ÀÇ ´«ÀÌ ³ª¿Â Ƚ¼ö= %ld\n", counter1);

  printf("2ÀÇ ´«ÀÌ ³ª¿Â Ƚ¼ö= %ld\n", counter2);

  printf("3ÀÇ ´«ÀÌ ³ª¿Â Ƚ¼ö= %ld\n", counter3);

  printf("4ÀÇ ´«ÀÌ ³ª¿Â Ƚ¼ö= %ld\n", counter4);

  printf("5ÀÇ ´«ÀÌ ³ª¿Â Ƚ¼ö= %ld\n", counter5);

  printf("6ÀÇ ´«ÀÌ ³ª¿Â Ƚ¼ö= %ld\n", counter6);

 

  return 0;

}