ÁÖ»çÀ§¸¦ ´øÁö¸é
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;
}