안녕하세염~ 가끔 눈팅만 하다가는 cherry 라고 해염~
C언어 문제를 풀다가 막히는곳이 생겨서 저도 질문 올리고 가염~
오빠들 악플은 달지 말아쥬세염 ㅠ_ㅠ

문제는 어북온씨 2장 24번인데염, for 루프를 사용하여 rand()를 500번 호출하고,
rand()의 리턴 값이 median보다 크면 above_cnt 변수를 증가시키고,
작으면 below_cnt를 증가시키는 프로그램 짜는거에염~!

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

int main(void)
{
 int above_cnt = 0, below_cnt = 0, i;
 double median = RAND_MAX / 2.0;

 srand(time(NULL));
 for (i = 0; i<500; i++)
 {
  if (rand() > median)    above_cnt++;   
  else if (rand() < median) below_cnt++;         
 }

 printf(\"%s%d%s%d\\n%s%d\\n\",
  \"above_cnt = \", above_cnt, \", below_cnt = \", below_cnt,
  \"difference = \", above_cnt - below_cnt); 
 
 return 0;
}

문제에선 above_cnt - below_cnt 값이 0 주위에서 진동해야 한다고 하는데,
계속 프로그램을 실행시켜도 값이 100 주위에서 진동해염 \'-\';
그런데 문제는, 위에서 굵은글씨로 된 부분을 else below_cnt++; 로 고치면
above_cnt - below_cnt  값이 0 주위에서 진동하게 된다는거에염 -ㅁ-
왜그럴까 궁금해서 int형 변수 temp=0를 선언하고 굵은글씨 아랫줄에
else if (rand() == median) temp++; 를 추가해봤지만 결과는 항상 temp=0.
rand()는 항상 int값을 리턴하고 median은 실수값을 가지니까 당연한 결과지만서도..

질문의 요지는,
① above_cnt - below_cnt 값이 원래 0 주위에서 진동하는 것인가?
② 소스에서 굵은글씨를 else below_cnt++; 로 고쳤을때 위의 현상이 나타난 이유

이것이 궁금해염~ 고수오빠들의 답변 부탁드려염~+_+